SYSROOT = dir路径

将dir作为逻辑根目录(搜索头文件和库文件)。编译器通常会在 /usr/include 和 /usr/lib 中搜索头文件和库,使用这个选项后将在 dir/usr/include 和 dir/usr/lib 目录中搜索。

例:

export SYSROOT=/xx/android-ndk-r14b/platforms/android-21/arch-arm/

NDK的arch-arm目录下有*/usr/lib* 和 /usr/include 这两个文件夹,所以可以以上这样设置。

CC=文件路径1 CXX=文件路径2

CC=文件路径1:

Program for compiling C programs; default ‘cc’. 用于编译C程序的编译器。默认为'cc'.

例:

export CC=/xx/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc

此处设置为arm-linux-androideabi-gcc作为C语言的编译器。

CXX=文件路径2

Program for compiling C++ programs; default ‘g++’. 用于编译C++程序的编译器。默认为'g++'.

例:

export CXX=/xx/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++

此处设置为arm-linux-androideabi-g++作为C语言的编译器。

TIPS :

NDK有个ndk-witch命令(USAGE: ndk-which where tool is 'gdb', 'gcc', 'objdump', etc.)可以列出当前NDK使用的tool位置。 例如:列出gcc位置:

android-ndk-r14b$ ndk-which gcc

输出:

/xxx/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc

###CFLAGS=参数选项 CXXFLAGS=参数选项 CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项。这两个变量实际上涵盖了编译和汇编两个步骤。两者的参数选项如下:

其中: -I dir 指定了编译所需的头文件.h所在的目录, -L dir 指定了编译所依赖的库(静态库,动态库)所在的目录, -llibrary 制定了依赖的库的名字(静态库,动态库)(例如:–lsunq:定义的是libsunq.so.由于在Linux下的库文件命名时有一个规定:必须以lib三个字母开头。因此在用-l选项指定链接的库文件名时可以省去lib三个字母。也就是说在对”-lsunq”进行处理时,会自动去链接名为libsunq.so的文件。).

需要注意的是,“-I dir”和“-L dir”都只是指定了路径,而没有指定文件,因此不能在路径中包含文件名。

例:

[root@localhost Gcc] Gcc hello1.c –I /root/workplace/Gcc/ -o hello1

这里依赖了-I定义的/root/workplace/Gcc/目录下的头文件。

[root@localhost Gcc] Gcc hello_sq.c –L /root/workplace/Gcc/lib –lsunq –o hello_sq

这里依赖了-L定义的/root/workplace/Gcc/lib目录下的libsunq.so的库。

CPP=文件路径 CPPFLAGS=参数选项

CPP=文件路径

Program for running the C preprocessor, with results to standard output; default $(CC) -E . 运行C预处理器的程序,结果为标准输出; 默认 $(CC)-E。

例:

export CPP=/xx/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-cpp

此处设置为arm-linux-androideabi-cpp作为C语言的预处理器。

CPPFLAGS=参数选项

Extra flags to give to the C preprocessor and programs that use it (the C and Fortran compilers).提供给C预处理器和使用它的程序的额外标志(C和Fortran编译器)。

从[链接2]处摘抄:

Compiling C programs

n.o is made automatically from n.c with a recipe of the form ‘$(CC) $(CPPFLAGS) $(CFLAGS) -c’.

Compiling C++ programs

n.o is made automatically from n.cc, n.cpp, or n.C with a recipe of the form ‘$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c’. We encourage you to use the suffix ‘.cc’ for C++ source files instead of ‘.C’.

可以看到:编译C和C++的时候都会使用到CPPFLAGS,儿CFLAGS和CXXFLAGS则是分别对C和C++编译时才用到。是否可以这么认为:C,C++都用到的FLAGS就可以用CPPFLAGS?

LIBS=参数 LDFLAGS=参数

LIBS:告诉链接器要链接哪些库文件, LDFLAGS:gcc 等编译器会用到的一些链接参数,也可以在里面指定库文件的位置。用法:LDFLAGS=-L/usr/lib -L/path/to/your/lib。每安装一个包都几乎一定的会在安装目录里建立一个lib目录。如果明明安装了某个包,而安装另一个包时,它却是说找不到,可以将那个包的lib路径加入的LDFALGS中试一下。

例:

LIBS = -lpthread -liconv -llibz -llog

跟CFLAGS,CXXFLAGS中的-L -l的功能类似。

##参考链接

linux lua 交叉编译,交叉编译 XXX含义与作用相关推荐

  1. linux使用cmake交叉编译arm32程序

    linux使用cmake交叉编译arm32程序 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 文章目录 linux使用cmake交叉 ...

  2. OpenCV基于ARM的Linux系统的交叉编译

    OpenCV基于ARM的Linux系统的交叉编译 基于ARM的Linux系统的交叉编译 先决条件 获取OpenCV源代码 获取最新的稳定OpenCV版本 从Git存储库中获取最新的OpenCV 构建O ...

  3. linux实验报告makefile,linux实验二交叉编译和Makefile实验报告.doc

    linux实验二交叉编译和Makefile实验报告 实验二 交叉编译和Makefile 实验目的 了解和掌握交叉编译模式和方法: 了解和掌握makefile文件的编写 学会使用交叉编译工具和make工 ...

  4. Linux man 命令后面的数字含义及作用

    Linux的man很强大,该手册分成很多section,使用man时可以指定不同的section来浏览,各个section意义如下:  1 - commands 2 - system calls 3 ...

  5. 嵌入式linux开发,交叉编译qt4.8.5报错:not found (try using -rpath or -rpath-link)/home/ms/work/code/qt/opensourc

    一.问题描述. 嵌入式linux开发,交叉编译qt4.8.5,执行make时报错如下: make[3]: Entering directory '/home/ms/work/code/qt/opens ...

  6. Linux环境下交叉编译mosquitto及其依赖

    本文的目录索引 文章目录 **本文的目录索引** **Linux环境下交叉编译mosquitto** 1.相关依赖(两个库外加一个交叉编译工具链) 2.开发环境以及目标环境说明 3.准备适用的交叉编译 ...

  7. Linux 上 NetBSD 交叉编译环境搭建

    Linux 上 NetBSD 交叉编译环境搭建 NetBSD 以高移植性著称,支持众多的处理器架构,并且它的代码和工具稳定性非常高,包括各种接口,工具等.并且由于 BSD 授权的宽松条件,对于构建商业 ...

  8. librtmp linux下 编译,交叉编译能在Atlas500(aarch64)上运行的ffmpeg+x264+librtmp

    小白编译的过程,请指点 1.在Linux上准备交叉编译环境 1.1准备交叉编译链,文件夹名字叫Euler_compile_env_cross,申请把 1.2修改/etc/profile文件,在最后一行 ...

  9. 嵌入式linux开发,交叉编译qt4.8.5报错:Makefile:1054: recipe for target ‘.moc/release-shared-emb-arm/moc_qabstract

    一.问题描述. 嵌入式linux开发,交叉编译qt4.8.5,执行make时报错如下: ms@ubuntu:~/work/code/qt/opensource/qt-everywhere-openso ...

最新文章

  1. 【C#串口编程计划】C#串口协议解析 -- 二进制数据
  2. 配置一台路由器,两台电脑的重点
  3. SVN冲突出现原因及解决方法浅谈
  4. [Linux] 命令行工具
  5. 1339: 考试排名
  6. SAP Spartacus如何禁止某些标准的css样式
  7. OpenResity + nginx + mysq配置
  8. 【MFC】多线程同步—事件
  9. 引用Interop.SQLDMO.dll后的注意事项。
  10. MyBatis框架、log4j、数据库的配置文件
  11. 一文读懂 Spring Bean 的生命周期
  12. 计算机说课教案模板,说课稿通用模板
  13. 什么是锁?有几种锁?怎么用锁?
  14. onload事件和ready方法的区别
  15. 初学JavaScript之颜色小游戏
  16. Android各种时间格式转换
  17. Android常见内存泄漏及优化总结
  18. (笔记)andro studio ——ProgressDialog
  19. 如何在cmd中,使用cd进入指定文件目录
  20. Verilog语法-模块module[Day2学习笔记]

热门文章

  1. python数据分析面试_python数据分析面试
  2. CornerNet:实现demo、可视化heatmap、测试各类别精度
  3. linux下free源码,linux命令free源码解读:Procps free.c
  4. groovy怎样从sql语句中截取表名_SQL常用的基础查询语句
  5. 【longPressKey】长按键盘任意键(或组合键)3秒触发自定义事件(以Pause/Break键为例)
  6. 【必备】VSCode开发Angular的必备插件
  7. 【只需简单三个步骤】ACE系统前后端不分离情况下如何增加一个JSP嵌入页面
  8. 输入重定向,输出重定向,管道相关内容及实现方法
  9. python -socket -client
  10. 关于chrome等浏览器不支持showModalDialog的解决方案