【发布时间】:2018-03-09 22:31:48
【问题描述】:
这是 otool -L libtarget.dylib 的当前输出
libA.dyliblibB.dylib/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 307.5.0)/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)
我能够删除 libc++.dylib 依赖,但我不知道如何删除 libSystem.dylib。
在 CMake 中链接到共享库时,有没有办法删除默认的 /usr/lib 路径?
【问题讨论】:
-
我不明白你的问题。如果您向我们展示您如何链接到这些库,将会有所帮助。尝试创建一个重现您的问题的最小示例,然后发布您的
CMakeLists.txt。这样我们就可以清楚地看到您正在尝试做什么。 -
在我的 CMakeLists.txt 中,我执行类似于以下内容的操作:
target_link_libraries(target A)target_link_libraries(target libB)该库当前构建正确。但是,我要做的是删除对libc++.dylib和libSystem.dylib的依赖。如果您有任何建议,请告诉我@thomas_f -
@Alpha234 你的意思是你想摆脱硬编码的路径吗?如果您的可执行文件链接到标准 C++ 库,这可能意味着它依赖于它,因此不可能“摆脱它”?
-
@Nibor 我对 CMake 很陌生,但我认为它不是硬编码路径,因为我能够删除
libc++.dylib依赖项。我正在构建的 lib 不能具有标准的 lib 依赖项,否则将无法正确加载。我相信链接到libSystem.dylib只是 CMake 中的默认设置,我想知道如何删除该依赖项。 -
只是出于好奇:你是如何“移除”依赖的?
标签: c++11 cmake dynamic-linking c++-standard-library