如何解释perforce-jam构建系统应该使用哪个编译器(gcc)

时间:2016-07-18 14:53:20

标签: c++ linux gcc arm

我尝试使用

制作“hello world - project”
  • Jam(perforce)构建系统
  • C ++
  • 的Linux
  • arm-poky-linux-gnueabi-gcc compiller

的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 ......

1 个答案:

答案 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

在那里有一些配置可以在各种各样的平台上构建,并配有适当的编译器标志,但它并不适合那些胆小的人。