Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 用于跨多个体系结构构建库的Makefile_C_Linux_Makefile - Fatal编程技术网

C 用于跨多个体系结构构建库的Makefile

C 用于跨多个体系结构构建库的Makefile,c,linux,makefile,C,Linux,Makefile,我有一个非常基本的makefile,它的目标是构建静态库或动态库。它默认为创建静态库 我希望能够为多种体系结构构建这个库。我希望能够通过命令行指定我希望构建它的体系结构,以便它在内部获取所有其他内容(CC、AR等的值) 最好的方法是什么?我建议最简单的方法是在makefile中为不同的体系结构设置环境变量,然后定义引用该体系结构部分变量的规则。也可以在其他地方设置和使用一些常用值 SPARCCC=/opt/SUNWspro/bin/cross-cc GCC=/usr/bin/gcc GCCDEB

我有一个非常基本的makefile,它的目标是构建静态库或动态库。它默认为创建静态库

我希望能够为多种体系结构构建这个库。我希望能够通过命令行指定我希望构建它的体系结构,以便它在内部获取所有其他内容(CC、AR等的值)


最好的方法是什么?

我建议最简单的方法是在makefile中为不同的体系结构设置环境变量,然后定义引用该体系结构部分变量的规则。也可以在其他地方设置和使用一些常用值

SPARCCC=/opt/SUNWspro/bin/cross-cc
GCC=/usr/bin/gcc
GCCDEBUG=/usr/bin/gcc
TAR=/usr/bin/tar

sparc: 
    @echo $(SPARCCC) -o a a.c
    @echo ${TAR} cvf a.tar a.*

i386 : 
    @echo $(GCC) -o a a.c
    @echo ${TAR} cvf a.tar a.*
    @echo $(GCCDBX)
这里有两个不同的目标sparc和i386,为上面的脚本运行它们将产生如下结果

$ make sparc
/opt/SUNWspro/bin/cc -o a a.c
/usr/bin/tar cvf a.tar a.c a.tar

$ make i386
/usr/bin/gcc -o a a.c
/usr/bin/tar cvf a.tar a.c a.tar

你是说交叉编译?@kaylum是的,我是说交叉编译。