我正在尝试从.o文件集中创建动态库,但是当我这样做时
gcc -dynamiclib -current_version 1.0 mymod.o -o mylib.dylib
或
ld * .o -o mylib.dylib
我收到很多错误,如:
“_ objc_msgSend”,引自: - NSObject + SBJSON.o中的[NSObject(NSObject_SBJSON)JSONFragment]
“operator new(unsigned long)”,引自: MStatistic.o中的MStatistic :: instance() StatisticObserver.o中的StatisticProfileLoggingObserver :: instance()
ld:找不到架构x86_64的符号
你能帮助我,如何解决它并得到我的.dylib?
答案 0 :(得分:3)
您可以将-undefined dynamic_lookup
作为选项传递给ld
,或者:
-Wl,-undefined -Wl,dynamic_lookup
到gcc
或clang
(将其传递给链接器)。
答案 1 :(得分:0)
从这一行:
ld: symbol(s) not found for architecture x86_64
听起来你正在构建一些库,这些库只创建了仅为32位体系结构构建的文件。
您需要修改所有您正在构建的库/框架的makefile,以构建32位和64位;在实际意义上,所有出货的MacOS机器都具有64位功能,因此为64位构建 可能是安全的。
在编译/链接行中,添加如下内容:“-arch x86_64
”并且应该为64位端编译内容。同时做32& 64位,你基本上需要复制编译和放大器链接行与他们自己的“-arch i386
”和“-arch x86_64
”行。