【问题标题】:Compiling a dynamically linked library编译动态链接库
【发布时间】:2011-08-06 04:28:54
【问题描述】:

我目前正在尝试使用 Windows 和 MinGW 编译一个动态链接库(用于插件系统)。

我使用这个命令行编译每个对象:

mingw-g++ -fPIC test.cpp

以及使用这一行的库:

mingw-g++ -rdynamic -shared -Wl,-soname,test.so.1 -o test.so test.o

它根本不起作用(在 Linux 中使用 GCC,但类似的行也起作用):fPIC 和 rdynamic 由于某种原因被忽略了。 在尝试创建库时,它失败了,因为编译器尝试将它与应该解析的对象链接,因为我将它与主二进制文件动态链接。

那么你如何使用 MinGW 编译它?

谢谢:)!

【问题讨论】:

    标签: windows mingw


    【解决方案1】:

    -fPIC-rdynamic 被忽略,因为它们未用于 Windows。

    另外,.so 不是 Windows 上库的正确输出扩展名。

    使用 GCC 为/在 windows 上创建共享库:

    mingw-g++ -c file.cpp -o file.o
    mingw-g++ -shared -Wl,--out-implib,libfile.a -o file.dll file.o 
    

    不多不少。

    而且,文档总是很可爱:http://www.mingw.org/wiki/sampleDLL

    【讨论】:

    • 所以基本上当设置了编译器标志并且编译器不知道它时,它会被忽略吗?我认为编译器应该抛出一个错误或至少一个警告
    • @Bionix 取决于选项和编译器。有时,忽略此类选项(例如在这种情况下)会减少麻烦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    相关资源
    最近更新 更多