我正在测试某种非常规的项目布局并rake
作为make实用程序。有一条规则可以从不同目录中的源文件编译二进制文件,并将它们链接到共享库。此规则从项目的根目录运行。例如,规则执行此操作:
clang -I libs/ -o tests/sourcefile2 tests/sourcefile2.c shared_libs/libFoo.so
结果,我得到shared_libs/libFoo.so
了二进制文件的完整路径:
readelf -d tests/sourcefile2
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [shared_libs/libFoo.so]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
...
我想这样将其更改为'libFoo.so':
readelf -d tests/sourcefile2
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libFoo.so]
...
然后,我可以根据需要设置RPATH
动态链接器,它将提供一些灵活性。但是我找不到相应的选项或类似的示例。您能建议如何处理吗?我是否应该仅使用一个临时目录进行构建,复制所有内容并在那里进行编译?
如果使用“ ld”作为链接器,则应该可以使用“ -Wl,-soname”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句