我是靠谱客的博主 简单老鼠,最近开发中收集的这篇文章主要介绍linux下makefile的,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

近期在做32位程序移植到64位环境下的工作,为了使32位和64位系统下编译程序使用一个makefile,需要条件编译,找到了两种方法。下面的两种方法以使用linux的mysql为例。
 
方法1:使用变量决定使用到库的路径,如下所示:
LINUX_VERSION=64
    ifeq ($(LINUX_VERSION),64)
        LIB= -L/usr/lib64/mysql
    else
        LIB=-L/usr/lib/mysql
    endif
$(EXEC):$(OBJS)
    g++ -Wall -I. -L. $(LIB) -o $@ $^ -lpthread -lstdc++ -lmysqlclient
当把LINUX_VERSION设置为64时,在64位下编译,使用/usr/lib64/mysql路径的mysql库,当把LINUX_VERSION设置为32时,在32位下编译,使用/usr/lib/mysql路径的mysql库。
 
方法2:通过makefile的命令行参数决定编译环境。如下例,通过添加了V变量,命令行参数给V赋值,在makefile中使用变量V判断使用库的路径。
    ifeq ($(V),64)
    LIB= -L/usr/lib64/mysql
else
    LIB=-L/usr/lib/mysql
endif
$(EXEC):$(OBJS)
g++ -Wall -I. -L. $(LIB) -o $@ $^ -lpthread -lstdc++ -lmysqlclient
使用如下:
    命令行输入:makefile V=64           // 表示在64位平台上编译,
    命令行输入:makefile                // 无参数表示在32位平台上编译
    同样在linux和arm交叉编译环境中编译使用上述方法很用,如:
ifeq ($("这里是自己定义的变量"),ARM)
    CC=arm_linux_gcc
else
    CC=gcc
endif
方法1是通过手动修改makefile实现,方法2通过命令行传参实现。在makefile里可以自动检测出当前环境是32还是64位,有待进一步研究。

最后

以上就是简单老鼠为你收集整理的linux下makefile的的全部内容,希望文章能够帮你解决linux下makefile的所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部