gpt4 book ai didi

c++ - 可以在 Ubuntu 中编译,但不能在 Mac OS X 中编译

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:18:19 25 4
gpt4 key购买 nike

我在 Ubuntu 12.04 上构建了一个动态库(.so 文件)。我们称它为 test.so。我有一个 test.cpp 文件,它调用了一些库函数。我首先通过以下方式将 test.cpp 编译成 test.o:

g++ test.cpp -o -c test.o

成功了。然后我通过以下方式将 test.o 编译成 test.so:

g++ -shared test.o -o test.so

也成功了。

我在 Mac OS X 上做了类似的事情。

我第一次得到 test.o 是:

g++ test.cpp -o -c test.o

然后

g++ -dynamiclib test.o -o test.dylib

这失败了,因为我没有提供 test.cpp 中使用的库。我修改了它:

g++ -dynamiclib test.o -o test.dylib -L/path/to/libraries -lLibraryName

然后就可以了。

请注意,对于第一种情况,我没有为 test.cpp 中使用的库和特定库提供这样的路径。有人知道为什么我在第一种情况下不需要,但在第二种情况下需要吗?

最佳答案

具有默认选项的链接器在 Linux 和 OSX 上的行为不同。要使 OSX 链接的行为更像您在 Linux 上的期望,请使用以下链接标志。

-Wl,-undefined,dynamic_lookup

关于c++ - 可以在 Ubuntu 中编译,但不能在 Mac OS X 中编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30228151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com