Gcc 与系统库动态或静态链接的库的交叉编译

Gcc 与系统库动态或静态链接的库的交叉编译,gcc,raspberry-pi,g++,cross-compiling,ld,Gcc,Raspberry Pi,G++,Cross Compiling,Ld,我正在尝试为RaspberryPi目标系统交叉编译一些依赖项库,主机系统是带有GCC编译器的Linux。例如,假设其中一个LIB依赖于链接阶段,并与系统的静态或动态库之一链接。 链接器如何解决此案例?因为这些.a或.so文件在目标系统上可能不同,所以在这种情况下,RaspberryPi上的程序可能会崩溃。如何使其以正确的方式工作?交叉编译器提供的构建环境更准确地描述为交叉工具链。它需要提供您所需要的一切:不仅是编译器,还有汇编器、链接器和所有运行时支持库。这包括C库,也许是GLIMC,也许还有其

我正在尝试为RaspberryPi目标系统交叉编译一些依赖项库,主机系统是带有GCC编译器的Linux。例如,假设其中一个LIB依赖于链接阶段,并与系统的静态或动态库之一链接。
链接器如何解决此案例?因为这些.a或.so文件在目标系统上可能不同,所以在这种情况下,RaspberryPi上的程序可能会崩溃。如何使其以正确的方式工作?

交叉编译器提供的构建环境更准确地描述为交叉工具链。它需要提供您所需要的一切:不仅是编译器,还有汇编器、链接器和所有运行时支持库。这包括C库,也许是GLIMC,也许还有其他的东西,GCC运行时库LIGBCC和LIGBCCs,以及C++运行时库LIbSTDC++。但是构建环境还需要软件需要构建的所有库的副本,通常包括头文件和目标的静态库或动态共享对象。特别是,您不能在主机上使用已安装的头文件,因为它们可能具有错误的目标定义和声明


一些程序员只是简单地将他们的依赖项(不是系统库)复制到他们的源代码树中,这样交叉构建环境就可以保持最小。但是,这些库必须作为项目的一部分进行跟踪和更新,这可能会很麻烦。

我对项目的依赖是从源代码构建的OpenCV 3.4.3,因此它可能与system和raspicam中的某些内容有一些内部链接。所以在这种情况下,我需要找到OpenCV依赖于构建时间的所有库,并从arm的源代码中构建它们?奥伊斯。您也许可以将预先存在的交叉工具链与所有必需的包一起使用,但我不知道自停止以来,在使用大型包集方面还有什么剩余的工作。或者您可以简单地以本机方式构建,可能是通过仿真,并使用标准的GNU/Linux发行版。