1,#error在编译期进行警告判断

eg:
#if USB_MAXCHILDREN > 31 /* 8*sizeof(unsigned long) - 1 和条件编译宏一起使用,在编译时就可以根据宏的值进行选择性的打印、编译*/
#error event_bits[] is too short!
#endif

#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
  #error LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
  #else
  #error LINUX_VERSION_CODE is ok!!! /*打印了它*/
  #endif

 

#error message ----注:message不需要用双引号包围,

#error 编译指示字用于自定义程序特有的编译错误消息类似的,

#warning用于生成编译警告,但不会停止编译。

#line的用法:

#line 用于强制定新的行号和编译文件名,并对源程序的代码重新编号,

用法:#line number filename   注:filename可省略,

#line 编译指示字的本质是重定义_line_和_FILE_

2. pkg-config

pkg-config可以向configure和make传递include path和library path。

$ pkg-config --list-all: list all known packages 列出所有的包 $ pkg-config --cflags libdrm: -I/usr/include/libdrm  列出库编译时需要的头文件 $ pkg-config --libs libdrm: -ldrm  链接的动态库

gcc sample.c -o sample 'pkg-config --cflags --libs libdrm'

如果libdrm不在标准路径下,那么这样gcc sample.c -o sample `PKG_CONFIG_PATH=path pkg-config --cflags --libs libdrm`

默认情况下编译器会去/usr/include等特定目录下寻找头文件和库文件,但是有时候这些库可能再各个位置. pkg-config默认会在/usr/lib/pkgconfig/目录下查找所有的.pc文件,当找不到到时候会去到环境变量PKG_CONFIG_PATH查找所有的.pc文件,根据.pc文件返回头文件、库文件位置等各种参数给编译器使用。 库编译完成后,会在{installed_home/lib/}下产生一个名为pkgconfig的目录,内含该链接库的.pc文件,将包含.pc的路径添加到环境变量PKG_CONFIG_PATH中,就可以让pkg-config在这些路径的.pc文件中 查找到你自己编译库的头文件和库文件到位置。

编译时: export PKG_CONFIG_PATH=/installed_home/lib/pkgconfig:$PKG_CONFIG_PATH

程序运行时: export LD_LIBRARY_PATH=/path/lib:$LD_LIBRARY_PATH以便应用程序可以查找到库文件的位置。

C编译相关的更多相关文章

  1. #ifdef预编译相关用法

    #ifdef预编译相关用法主要有:(1)#ifdef XXX executing the corresponding xxx code #endif(2)#ifdef XXX executing th ...

  2. linux编译相关命令

    一.编译可执行文件 g++ –c Hello.cpp  编译文件,生成目标文件Hello.o g++ Hello.o –o a.out  链接并重命名为可执行文件a.out g++ Hello.cc  ...

  3. fuse3 编译相关简要记录 与 fuse3 系统调优;

    下面是在使用fuse3 编译bbfs 过程中一些参数,用于备忘: FUSE_CFLAGS="-I/usr/local/include/fuse3" FUSE_LIBS=" ...

  4. linux内核编译相关

    参考:http://www.arm.linux.org.uk/docs/kerncomp.php 一. 内核编译1) linux 2.4make clean/make mrpropermake dep ...

  5. csqlite编译相关配置问题

    csqlite是非常好用的数据库,同时该数据库是开源的,基于一定原因可能需要编译自己需要的csqlite版本,那么下面介绍内容也会你就会感兴趣了. 这里要实现的目标是使用VS工具能够正确编译csqli ...

  6. java编译相关问题总结

    参考:http://jingyan.baidu.com/article/5bbb5a1b080f6113eba179f0.html 1.在linux下生成的class文件/jar包,拿到windows ...

  7. gcc编译相关tips

    http://blog.csdn.net/benpaobagzb/article/details/51364005 静态库链接时搜索路径顺序: ld会去找GCC命令中的参数-L 再找gcc的环境变量L ...

  8. VC工程编译相关

    ①error C4996: 'sprintf': This function or variable may be unsafe 这不是语法的错误,而是IDE默认禁止这种容易产生漏洞的旧函数,解决的方 ...

  9. mfix18.1.1的cmake编译相关问题

    今天把mfix-18.1.1\model\monitors里的文件拷到当前工作目录,进行修改编译,发现修改后运行发现并没有出现任何修改后的效果,发现这几个文件只有在原始目录里修改的才起作用,拷贝到当前 ...

随机推荐

  1. hdu 5187 快速幂 + 快速乘 值得学习

    就是以那个ai为分水岭,左边和右边都分别是单调增或单调减如图         就这四种情况,其中头两种总共就是两个序列,也就是从头到尾递增和从头到尾递减.         后两种方式就是把序列中德数分 ...

  2. facebook graph api 报错SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)')

    使用facebook graph api,报错如下 一开始以为是https证书验证失败,查了一下午源码,没有看到问题,于是把Python27\lib\site-packages\requests\ad ...

  3. 日志处理(二) 日志组件logback的介绍及配置使用方法(转)

    本文转自:http://www.cnblogs.com/yuanermen/archive/2012/02/13/2348942.html http://www.cnblogs.com/yuanerm ...

  4. BZOJ2221: [Jsoi2009]面试的考验

    传送门 一句话题意,给定一个序列,询问区间内差值的绝对值的最小值. 这道题之前见过一次,似乎是在一次UER上,那一道题当时是用了近似算法才能过. 数据保证数列随机. 这道题显然非常适合离线的做法,考虑 ...

  5. 20145311王亦徐《JAVA程序设计》课程总结

    20145311王亦徐<JAVA程序设计>课程总结 每周读书笔记链接汇总 第一周读书笔记 第二周读书笔记 第三周读书笔记 第四周读书笔记 第五周读书笔记 第六周读书笔记 第七周读书笔记 第 ...

  6. TypeScript 照猫画虎

    定义变量类型 const num: number = 1 定义函数参数类型 const init: (p: str) => void = function(param) { alert(para ...

  7. linux下如何安装解压工具rar

    1.获取 wget https://www.rarlab.com/rar/rarlinux-x64-5.6.1.tar.gz 2.解压 tar xvf rarlinux-x64-5.6.1.tar.g ...

  8. [原][osgearth]earth文件加载道路一初步看见模型道路

    时间是2017年2月5日17:16:32 由于OE2.9还没有发布,但是我又急于使用OE的道路. 所以,我先编译了正在github上调试中的OE2.9 github网址是:https://github ...

  9. Java Spring-AOP的概述

    2017-11-08 19:31:23 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP ...

  10. 桌面以及任务栏的所有浏览器,被加上了 hao.360.cn的网址

    桌面以及任务栏的所有浏览器,被加上了hao.360.cn的网址 也不知道是安装了什么软件,中了360的招. 桌面以及任务栏的所有浏览器,被加上了hao.360.cn的网址. 这种东西,肯定是该死的36 ...