我安装了SDL2。我可以将我的程序链接到
clang++ -lSDL2 -lv8 main.o test.o -o nano8但是,出于分发原因,我想分发二进制文件,因此我将libSDL2-2.0.0.dylib复制到/myapp/lib/libSDL-2-2.0.0.dylib下,对于文档,@executable_path应该允许我链接到那个dylib,而不是/usr/local/lib,但是如果我运行
clang++ @executable_path/lib/libSDL2-2.0.0.dylib -lv8 main.o test.o -o nano8我知道错误了
clang: error: no such file or directory: '@executable_path/lib/libSDL2-2.0.0.dylib'如何设置dylib的搜索路径?
发布于 2015-10-16 10:18:13
这是一件很痛苦的事情。
我假设/myapp可以在文件系统中的任何位置,并且希望从@executable_path/../lib/libSDL2.dylib加载库
如果是这样,您必须使用Run路径,并在链接期间复制和修改库(这需要在每次构建时都完成):
cp /usr/local/lib/libSDL2.dylib build_dir/lib。.dylib更改install_name_tool的安装名称:
install_name_tool -change /usr/local/lib/libSDL2.dylib @rpath/libSDL2.dylib构建_dir/lib/libSDL2.dylibbuild_dir/lib/libSDL2.dylib,并在链接期间设置rpath:
cd clang++ _dir/bin -o obj_dir/main.o obj_dir/test.o -o nano8 -L ./lib -lv8 -lSDL2 -Xlinker -rpath -Xlinker“@-lv8_path/ ../lib”我还没有对此进行测试,可能会出现错误。使用otool -L检查二进制和库中的库引用,以便在此问题上居家。
更清洁的方式:
将二进制文件安装到/usr/local/bin中,并提供要安装到/usr/local/lib中的任何.dylib。这更好,因为/usr/local是用户二进制文件的地方,您不需要上面的faff。
https://stackoverflow.com/questions/33167503
复制相似问题