ld:warning:找不到选项的目录:-LC_ID_DYLIB = / usr / lib

时间:2016-03-22 16:38:39

标签: c macos gcc

我正在使用OSX命令行gcc并尝试构建动态库。当我进行构建时,我收到以下警告。如果找到这个库/ usr / lib是众所周知的怎么样? / usr / lib确实存在于我的机器上

这就是我正在使用的:

gcc -arch i386 cata/*.c -dynamiclib -o build/cata.dylib -LC_ID_DYLIB=/usr/lib

由于

1 个答案:

答案 0 :(得分:0)

我解决它的方式是让它如此卡在库中的字符串(在运行时在哪里找到库)是相对于无处 - 如果这是有道理的。所以它将被迫使用LD_LOAD_PATH。

我正在使用其他标志,因为有人建议我使用它们。

所以我最终使用的gcc是这样的:

# my tree is like this
# cata/*.c
# build/*.dylib
#
cd build
gcc -arch i386 ../cata/*.c -dynamiclib -o cata.dylib 

这样做会编译/在同一目录中创建一个库,它认为它已被“使用”(基本上没有路径)。我现在可以自由地把它放在其他地方。当它稍后在编译时由另一个程序链接,然后使用

进行检查
otool -L

它出现在库名称前面没有路径。这显然是优选的,因为现在当系统试图找到它时它会转向查看标准库并最终找到它(因为我将它安装到标准位置之一)。

以原始方式,otool -L显示它具有所需的路径

'build/cata.dylib'

这使得它无法找到,这就是我试图使用苹果文档解决问题的原因。

这并不能解决为什么LC_ID_DYLIB不起作用的原因。我查看了Loader.h文件(第643行),它有一个标识符(0xd),一个路径和一个结构的空间,所以我真的不明白为什么我的路径没有被拾取。但它有两个不同的主题。 Loader.h是运行时,另一个是gcc AFAIK。我还在学习苹果。