什么可能导致共享库上“无法与主可执行文件链接”?

时间:2010-11-17 18:10:47

标签: c++ macos linker

在编译时尝试将预编译库链接到主文件时,我得到“无法与主可执行文件链接”。

hostname:folder user$ g++ -o add testadd.cc -ladd -lmultiply -L.
ld: in ./libmultiply.dylib, can't link with a main executable
collect2: ld returned 1 exit status
hostname:folder user$ 

之前编译的libs(add和multiply),并且存在于同一目录中。

任何人都可以给我一个暗示可能导致此错误的内容吗?

感谢名单

PS:OSX 10.6.4 with g ++ - 4.2.1

3 个答案:

答案 0 :(得分:1)

供参考:

使用compiler-switch -dynamiclib时会出现上述错误, 尝试使用-dynamiclib -undefined dynamic_lookup进行编译。

对我有用。 :)

答案 1 :(得分:0)

看起来某人有类似的问题:ld can't link with a main executable

答案 2 :(得分:0)

我摆弄了一下,显然我修好了......

在用

编译共享库之前
g++ -o libmultiply.dylib libmultiply.cc -dynamiclib

并收到上述错误。现在我再次使用

重新编译了lib
g++ -o libmultiply.dylib libmultiply.cc -dynamiclib -undefined dynamic_lookup

现在似乎有用了。 (至少编译和链接。) 但是我仍然需要检查一下,lib是否实际上完成了它的用途。 ;)

到目前为止,我不知道为什么链接现在不会报告错误,但也许其他人可以通过这些信息对此进行说明。 =)

只是我的2 ct。