我尝试使用
制作“hello world - project”的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;
}
的Jamfile
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 架构设置所有必需的环境来构建helloworld,而不是 x86_64-linux ......
答案 0 :(得分:0)
我认为问题在于您已经设置了C编译器的路径,但是C ++编译器(通常也是链接器)
尝试:jam -sCC=/home/user/full_path/arm-poky-linux-gnueabi-gcc -sC++=/home/user/full_path/arm-poky-linux-gnueabi-gcc
您可能还想添加&#34; -dx&#34; debug flag,它将显示jam实际执行的命令。
如果您感到勇敢,请查看Perforce Jamrules(这是一个名为SetCommonCompiler的规则,有助于设置交叉编译器): https://swarm.workshop.perforce.com/projects/perforce_software-p4/files/2016-1/Jamrules
在那里有一些配置可以在各种各样的平台上构建,并配有适当的编译器标志,但它并不适合那些胆小的人。