Arm 交叉编译coreutils
我在为ARM交叉编译GNUCoreutils(git克隆)时遇到了问题 在StackExchange网络中的其他问答之后,我完成了以下步骤: 设置:Arm 交叉编译coreutils,arm,cross-platform,gnu-coreutils,Arm,Cross Platform,Gnu Coreutils,我在为ARM交叉编译GNUCoreutils(git克隆)时遇到了问题 在StackExchange网络中的其他问答之后,我完成了以下步骤: 设置: git clone https://git.savannah.gnu.org/git/coreutils.git cd coreutils/ && ./bootstrap [...] 交叉汇编: export CC=/path/to/toolchain/arm-linux-gnueabihf-gcc export CXX=/pat
git clone https://git.savannah.gnu.org/git/coreutils.git
cd coreutils/ && ./bootstrap
[...]
交叉汇编:
export CC=/path/to/toolchain/arm-linux-gnueabihf-gcc
export CXX=/path/to/toolchain/arm-linux-gnueabihf-g++
汇编:
./configure --host=arm-linux-gnueabihf
[...]
make
GEN .version
[...]
GEN lib/wchar.h
GEN lib/wctype.h
GEN src/coreutils.h
GEN src/dircolors.h
make src/make-prime-list
make[1]: Entering directory '/media/data/sources/coreutils'
CC src/make-prime-list.o
CCLD src/make-prime-list
make[1]: Leaving directory '/media/data/sources/coreutils'
GEN src/primes.h
/bin/bash: src/make-prime-list: cannot execute binary file: Exec format error
Makefile:14603: recipe for target 'src/primes.h' failed
make: *** [src/primes.h] Error 126
你没有编译吗?
我看到它试图在我的x64机器上运行此生成基本列表
,因此出现了格式错误。但无论如何,它应该用工具链编译
有什么建议吗?要交叉编译,您应该只将
--host
选项指定为/configure
,不能将交叉编译器指定为CC
和CXX
。configure
脚本应该做正确的事情,对主机二进制文件使用主机编译器,如makeprime list
,对目标二进制文件使用交叉编译器
但是它似乎没有,因此无法生成src/primes.h
。但是,该文件似乎不是特定于arch的,而且makeclean
不会删除它,因此以下内容对我很有用:
./configure && make
为构建架构构建makeprime列表
,并使用该列表生成src/primes.h
,然后
make clean && ./configure --host=arm-linux-gnueabihf && make
要交叉编译目标二进制文件。要交叉编译,只需将
--host
选项指定为/configure
,不能将交叉编译器指定为CC
和CXX
。configure
脚本应该做正确的事情,对主机二进制文件使用主机编译器,如makeprime list
,对目标二进制文件使用交叉编译器
但是它似乎没有,因此无法生成src/primes.h
。但是,该文件似乎不是特定于arch的,而且makeclean
不会删除它,因此以下内容对我很有用:
./configure && make
为构建架构构建makeprime列表
,并使用该列表生成src/primes.h
,然后
make clean && ./configure --host=arm-linux-gnueabihf && make
交叉编译目标二进制文件。太好了,谢谢Stephen。这解决了
makeprime list
的问题,但是我无法让它编译链接器错误,“在静态链接的应用程序中使用“”需要在运行时使用glibc版本中用于链接的共享库”。您得到的错误是“多重定义\uuu mktime\u internal
”;您上面引用的库警告只是一个警告。mktime
错误看起来像是工具链的问题;我正在使用Debian 9中的Debian交叉编译器(apt install gcc arm linux gnueabihf
)。太好了,谢谢Stephen。这解决了makeprime list
的问题,但是我无法让它编译链接器错误,“在静态链接的应用程序中使用“”需要在运行时使用glibc版本中用于链接的共享库”。您得到的错误是“多重定义\uuu mktime\u internal
”;您上面引用的库警告只是一个警告。mktime
错误看起来像是工具链的问题;我正在使用Debian 9中的Debian交叉编译器(apt install gcc arm linux gnueabihf
)。