我尝试使用以下方法制作“ hello world-project”
Jam(perforce)构建系统
C ++
的Linux
arm-poky-linux-gnueabi-gcc编译器
helloworld-perforce-jam.cpp
#include <stdio.h>
int main(int args, char* argv[])
{
printf("\n\n\nHello World from HELLOWORLD-PERFORCE-JAM!!!\n\n\n\n");
return 0;
}
卡纸
Echo $(CC) ;
Main helloworld-perforce-jam : helloworld-perforce-jam.cpp ;
如果我不使用Jam-build系统,直接使用arm-poky-linux-gnueabi-gcc,就不会有任何阻碍:
ygyerts@ygyerts:$ /home/user/full_path/arm-poky-linux-gnueabi-gcc helloworld-perforce-jam.cpp
将为ARM体系结构创建一个可执行文件。
如果使用默认的gcc(由Jam定义),则没有阻止程序,例如:
ygyerts@ygyerts:$ jam
cc
...found 66 target(s)...
...updating 1 target(s)...
Link helloworld-perforce-jam
Chmod1 helloworld-perforce-jam
...updated 1 target(s)...
!!! x86体系结构只有一个可执行文件!将被创建。
但是这个想法是使用定制的gcc编译器(/ home / user / full_path / arm-poky-linux-gnueabi-gcc)。这是一个障碍,我不知道如何...
我尝试使用jam可执行文件的参数进行播放,如下所示:
ygyerts@ygyerts:$ jam -s CC=/home/user/full_path/arm-poky-linux-gnueabi-gcc
/home/user/full_path/arm-poky-linux-gnueabi-gcc
...found 66 target(s)...
...updating 2 target(s)...
C++ helloworld-perforce-jam.o
Link helloworld-perforce-jam
helloworld-perforce-jam.o: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
/home/ygyerts/TOOLING/TeamCity/TeamCity-9.1.7/buildAgent/work/e58af29ade3fd40c/fsl-community-bsp/build/tmp/sysroots/x86_64-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc -o helloworld-perforce-jam helloworld-perforce-jam.o
...failed Link helloworld-perforce-jam ...
...failed updating 1 target(s)...
...updated 1 target(s)...
请帮助我了解如何设置所有必需的环境以使用arm-linux体系结构而不是x86_64-linux构建helloworld ...
最佳答案
我认为问题在于您已经设置了C编译器的路径,但是设置了C ++编译器(通常也是链接器)
试试:jam -sCC=/home/user/full_path/arm-poky-linux-gnueabi-gcc -sC++=/home/user/full_path/arm-poky-linux-gnueabi-gcc
您可能还需要添加“ -dx”调试标志,该标志将向您显示jam实际执行的命令。
如果您觉得自己很勇敢,请查看Perforce Jamrules(有一个名为SetCommonCompiler的规则可帮助设置交叉编译器):
https://swarm.workshop.perforce.com/projects/perforce_software-p4/files/2016-1/Jamrules
那里有用于在各种平台上构建的配置,带有适当的编译器标志,但这不是为胆小者准备的。