Xcode 7.3 +链接到相对路径= ld:找不到文件:../ lib / libd.dibib

时间:2016-04-09 01:15:10

标签: xcode linker xcode7 dynamic-linking xcode7.3

我有一个项目可以在Xcode 7.2及更早版本中编译,但是gets linker errors when compiling with Xcode 7.3。我已经能够将其缩小到simple example project,从而复制问题。

基本的项目结构是这样的:

.
├── one
│   ├── lib
│   │   └── lib1.dylib
│   └── src
│       └── one.c
├── two
│   ├── lib
│   │   └── lib2.dylib
│   └── src
│       └── three.c
└── three
    ├── lib
    │   └── lib3.dylib
    └── src
        └── two.c

lib3lib2的链接以及lib2lib1的链接。编译库时,其输出位于../lib目录相对于其src目录。

当我尝试编译lib3时,file not found: ../lib/lib1.dylib出现错误,即使../../one/lib位于库搜索路径中。

我可以使用什么奇怪和神秘的链接器标志来使搜索路径正常运行?或者这是Xcode的错误?

/Applications/Xcode.app/Contents/Developer/usr/bin/make -C one/src
cc -I ../../include   -c -o one.o one.c
cc -dynamiclib -undefined dynamic_lookup -flat_namespace -o ../lib/lib1.dylib one.o
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C two/src
cc -I ../../include   -c -o two.o two.c
cc -dynamiclib -undefined dynamic_lookup -flat_namespace -L ../../one/lib -o ../lib/lib2.dylib two.o -l1
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C three/src
cc -I ../../include   -c -o three.o three.c
cc -dynamiclib -undefined dynamic_lookup -flat_namespace -L ../../two/lib -L ../../one/lib -o ../lib/lib3.dylib three.o -l2
ld: file not found: ../lib/lib1.dylib for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [../lib/lib3.dylib] Error 1
make: *** [all] Error 2

0 个答案:

没有答案