C++ 如何使用交叉链接器而不是本机链接器

C++ 如何使用交叉链接器而不是本机链接器,c++,c,linker,makefile,C++,C,Linker,Makefile,我正试图使用OpenWRT提供的工具链为MIPS体系结构交叉编译一个包。我在制作过程中遇到以下错误: /usr/bin/ld: skipping incompatible /home/user/package/zlib/zlib-1.2.8/libz.so when searching for -lz 在本例中,zlib已经为MIPS交叉编译,但make使用“/usr/bin/ld”而不是“mipsel openwrt linux ld”。我已经尝试过了。/使用--with-ld选项进行配置,

我正试图使用OpenWRT提供的工具链为MIPS体系结构交叉编译一个包。我在制作过程中遇到以下错误:

/usr/bin/ld: skipping incompatible /home/user/package/zlib/zlib-1.2.8/libz.so when searching for -lz

在本例中,zlib已经为MIPS交叉编译,但make使用“/usr/bin/ld”而不是“mipsel openwrt linux ld”。我已经尝试过了。/使用--with-ld选项进行配置,但它说“--with-ld”是未知选项。

您是否检查了下一页

将主机和构建传递给包的构建系统以触发交叉编译

对于GNU配置,使用--build=architecture unknown linux GNU--host=architecture openwrt linux uclibc(例如:./configure--build=x86_64-unknown-linux-GNU–host=mips openwrt linux uclibc)

运行./config.guess以获取--build=选项

检查输出并确保“检查我们是否正在交叉编译…是”为“是”

对于GNU make,重写CC和LD环境变量(如果使用GNU配置,通常不需要)

使CC=architecture openwrt linux uclibc gcc LD=architecture openwrt linux uclibc LD


你检查了下一页吗

将主机和构建传递给包的构建系统以触发交叉编译

对于GNU配置,使用--build=architecture unknown linux GNU--host=architecture openwrt linux uclibc(例如:./configure--build=x86_64-unknown-linux-GNU–host=mips openwrt linux uclibc)

运行./config.guess以获取--build=选项

检查输出并确保“检查我们是否正在交叉编译…是”为“是”

对于GNU make,重写CC和LD环境变量(如果使用GNU配置,通常不需要)

使CC=architecture openwrt linux uclibc gcc LD=architecture openwrt linux uclibc LD


我知道这是两年前的事。我在为OpenWrt构建外部包时也遇到了同样的问题

对于最新的OpenWrt,您至少设置了两个环境变量:

  • 路径添加到\u OpenWrt/staging\u dir/toolchain-*/bin
    路径到
    路径
    环境变量
  • 路径设置为\u OpenWrt/staging\u dir
    设置为
    staging\u dir
    环境变量
  • 现在,您应该能够使用
    AC\u CANONICAL\u HOST
    (在configure.AC中查找)和
    /configure--HOST=architecture openwrt linux
    编译一个基于autoconf的项目

    您可能需要设置更多的环境变量,例如
    PKG\u CONFIG\u PATH
    PKG\u CONFIG\u LIBDIR
    ,以使
    PKG CONFIG
    正常工作

    我编写了一个bash脚本,为您完成所有工作: .
    在配置之前,您可以使用
    source sdkenv.sh
    激活脚本。

    我知道这已经两年了。我在为OpenWrt构建外部包时也遇到了同样的问题

    对于最新的OpenWrt,您至少设置了两个环境变量:

  • 路径添加到\u OpenWrt/staging\u dir/toolchain-*/bin
    路径到
    路径
    环境变量
  • 路径设置为\u OpenWrt/staging\u dir
    设置为
    staging\u dir
    环境变量
  • 现在,您应该能够使用
    AC\u CANONICAL\u HOST
    (在configure.AC中查找)和
    /configure--HOST=architecture openwrt linux
    编译一个基于autoconf的项目

    您可能需要设置更多的环境变量,例如
    PKG\u CONFIG\u PATH
    PKG\u CONFIG\u LIBDIR
    ,以使
    PKG CONFIG
    正常工作

    我编写了一个bash脚本,为您完成所有工作: .
    在配置之前,您可以使用
    source sdkenv.sh
    激活脚本。

    感谢您的回复。我尝试了你提到的步骤,但也没用。我猜./configure脚本出现了一些问题,无法设置LD变量。最后一行如何
    make CC=architecture openwrt linux uclibc gcc LD=architecture openwrt linux uclibc LD
    ?你犯了什么样的错误?尝试过但没有成功。找到了一些用于此架构的预构建包,因此结束了我的斗争。感谢您的回复。我尝试了你提到的步骤,但也没用。我猜./configure脚本出现了一些问题,无法设置LD变量。最后一行如何
    make CC=architecture openwrt linux uclibc gcc LD=architecture openwrt linux uclibc LD
    ?你犯了什么样的错误?尝试过但没有成功。找到了一些用于此体系结构的预构建包,因此结束了我的斗争。