我尝试使用以下方法制作“ 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

那里有用于在各种平台上构建的配置,带有适当的编译器标志,但这不是为胆小者准备的。

10-08 03:51