我与g++
的情况如下。我构建了一个名为libplugin.so
的共享库,该库在运行时由应用程序加载。这libplugin.so
链接到一些其他共享库,与-no-as-needed
链接器选项,并链接到一个静态库。如何在交叉编译期间强制链接到未安装的库
由于libplugin.so
本身并不在上市库使用的任何符号,-no-as-needed
才能使所有需要的库动态加载器加载 - 这是真的只有静态库引用 - 当插件在运行时加载-时间。在我的x86
建筑机器上,所有列为-no-as-needed
的库都安装在系统中。所以,图书馆在那里建得很好,程序也可以。
现在我正在尝试为ARM进行交叉编译,但也存在一些问题,因为在构建libplugin.so
时,链接程序无法在系统中找到指示为-no-as-needed
的库。链接无法找到这些库,因为它们(故意)未安装。我宁愿不安装它们。
所以这是我的问题。由于libplugin.so
没有直接引用以任何方式传递给-no-as-needed
的库,有没有办法强制链接器生成libplugin.so
,尽管传递给-no-as-needed
的ARM库不存在于我的x86构建系统中?
下面是一个例子:
arm-linux-gnueabihf-g++ -o libplugin.so module1.o module2.o -L./libstatic.a -Wl,--no-as-needed -lX11 -lXext -shared -s -fPIC
arm-linux-gnueabihf-ld: cannot find -lX11