无法链接到 Windows MinGW 的 libnanomsg,使用 MXE 进行交叉编译

标签 c mingw static-linking mxe nanomsg

我正在尝试在 mingw 上构建 nanomsg,使用 mxe 从 ubuntu 进行交叉编译。目标主机是x86_64。我构建得很好,但它不会链接。我遇到类似的问题

undefined reference to 'imp__nn_freemsg'

我认为这是一个静态库问题。我再次使用

构建
 ./configure --enable-static --disable-shared ...

同样的问题。链接到 libnanomsg.a 后,是否需要在 gcc 构建行中放入任何链接器标志?

最佳答案

如果您使用 VS 和 cmake 进行构建,将会设置许多定义。有些位于 src/nn.h 中,其他则分散在各处。顺便说一句,“imp__**”问题始终是静态链接失败。

传递这些标志将链接它:

-D_WIN32 -DNN_EXPORTS -DNN_HAVE_MINGW -DNN_HAVE_WINDOWS -DNN_USE_LITERAL_IFADDR=1 -DSTATICLIB

关于无法链接到 Windows MinGW 的 libnanomsg,使用 MXE 进行交叉编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29631948/

相关文章:

c - 使用 realloc 修改二维数组以添加行和列的函数

c - 无索引的指针算法的双指针内存分配访问问题

c++ - 在 Windows 中使用 mingW-w64 编译 AEScrypt 时出错

c++ - 错误 C2011 : 'sockaddr' : 'struct' type redefinition. 请参阅 'sockaddr' 的声明

haskell - ghc中的字节串链接

c - 如何执行 gcc 并忽略某些语法

calloc/malloc 并读取奇怪的行为?

c - 程序运行不佳(意味着输出(printf))但在 gdb t.exe 中运行良好

C++ chrono::duration_cast 总是输出 "0 seconds"

c++ - buildroot 文件系统 & 交叉编译 : dynamically linked application fails but static ok. 如何链接 uClibc