广告

原创 条件编译的应用

2007-2-25 15:10 3301 0 分类: MCU/ 嵌入式

只编写一套代码,既能用于PC环境又能用于嵌入式环境,工作之一在.c源程序中加入


条件编译语句,工作之二用两个不同的Makefile文件来生成不同环境下的目标文件。


比如动态链接库.c程序中的库函数定义采用如下格式:


#ifdef _PC_VERSION


用于PC环境的代码


#else


用于嵌入式环境的代码


#endif


然后编写两个Makefile文件,分别命名为makefile_pc,makefile_dev.
下面列出这两个makefile的区别之处:


%.o : %.c
        arm-linux-gcc -c $?


libmy.so : $(TGT)
        arm-linux-gcc -shared -o $@ $(TGT)


%.o : %.c
        gcc -c -D_PC_VERSION $?


libmy.so : $(TGT)
        gcc -shared -o $@ $(TGT)


最后用make -f makefile_pc或make -f makefile_dev生成不同环境下的目标代码.
对于其中的伪目标,比如clean,则make clean -f makefile_pc即可.

广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
ramonatulip 2010-03-29 14:24
STM32入门指南
1.硬件平台. 现在可以买到学习有的有英蓓特的MCBSTM32 和万利的EK-STM32F,反正这两个板我都买了399元和199买的.实惠,如果你自己开板做,成本还比这高.学会了才自己做自己的板子吧....
ramonatulip 2010-03-29 14:19
VMware for Windows中安装Fedora Core 6详细过程
2 使用的VMware版本为VMware-workstation-6.0.5-109488<?xml:namespace prefix = o ns = "urn:schemas-microso...
ramonatulip 2010-01-22 20:45
linux各版本的对比
Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来...
ramonatulip 2009-09-11 14:33
嵌入式系统开发的流程
一个产品从立项到成品大概需要以下几个阶段:(这里说的主要是软件)需求分析除了用户的显性需求还要特别注意发掘用户的隐性需求,比如公认的或默认的,无需明说的。选型和方案论证要从如下几方面考虑:技术可行性,...
ramonatulip 2009-09-11 14:10
串口调试工具
超级终端默认不支持键盘回显,要在属性设置的ASCII码设置里选中本地回显才可以。另外,它默认不发送回车符。因此,超级终端默认不发送回车符。因此,下面的实验可能出错。实验内容:先通过串口发送一行字符串“...
ramonatulip 2009-08-12 17:33
操作寄存器的好习惯
对于一个寄存器的配置最好不要一次次分位控制,因为有可能造成硬件的不稳定或者异常。比如i2c的命令寄存器,对其是主是从,是否开中断等等进行设置。最好在初始化的时候将希望进行的设置保存在一个数据结构中,到...
我要评论
0
0
广告
关闭 热点推荐上一条 /2 下一条