Áko*_*róy 22 linux gcc shared-libraries static-linking
当对使用库链接-l
选项(比方说-lfoo
),GCC会喜欢一个共享对象静态库,如果两者都发现了(会喜欢libfoo.so
到libfoo.a
).有没有办法让gcc更喜欢静态库,如果两者都找到了?
我正在尝试解决的问题如下:我正在为应用程序(飞行模拟器称为X-Plane)创建一个插件,具有以下约束:
/usr/lib
或/usr/lib32
:
LD_PRELOAD
或LD_LIBRARY_PATH
查找我的插件附带的共享对象为了解决上述约束,一种可能的解决方案是将生成的共享对象链接到所使用的所有非平凡库的静态32位版本.但是,在安装这些库时,通常会安装静态和动态版本,因此gcc将始终链接到共享对象而不是静态库.
当然,移动/删除/删除有问题的共享对象,只是将静态库放在中/usr/lib32
,这是一种解决方法,但它不是一个好的
注意:
-Wl,-static -lfoo -Wl,-Bdynamic,
但没有带来预期的结果-l:libfoo.a
过,但这也没有带来预期的结果Mat*_*Mat 10
您可以指定静态库的完整路径,而不使用-l
标记链接这些库.
gcc ... source.c ... /usr/lib32/libmysuperlib.a ...
Run Code Online (Sandbox Code Playgroud)