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

标签 c linux makefile

我有一个非常基本的 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

关于c - 用于跨多个体系结构构建库的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42429307/

相关文章:

c - 按位左移 (<<) 奇怪的行为

c - 父进程和子进程,如果一个退出,如何通知另一个退出?

linux - 在双十进制 shell 脚本中打印时间

makefile - checkinstall 会创建无用的 deb?

c - 带标记和空间奇偶校验的串行通信

c - C99:fscanf()设置eof早于fgetc()的标准做法吗?

mysql - 如何最小化 mysqld 写入磁盘的字节数?

c++ - 使用 Visual C++ 从命令行编译

c++ - 使用 makefile 链接来自不同目录的 .h 文件和 .c 文件

c - cmd参数语法错误