linux lua 交叉编译,交叉编译 XXX含义与作用
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含义与作用相关推荐
- linux使用cmake交叉编译arm32程序
linux使用cmake交叉编译arm32程序 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 文章目录 linux使用cmake交叉 ...
- OpenCV基于ARM的Linux系统的交叉编译
OpenCV基于ARM的Linux系统的交叉编译 基于ARM的Linux系统的交叉编译 先决条件 获取OpenCV源代码 获取最新的稳定OpenCV版本 从Git存储库中获取最新的OpenCV 构建O ...
- linux实验报告makefile,linux实验二交叉编译和Makefile实验报告.doc
linux实验二交叉编译和Makefile实验报告 实验二 交叉编译和Makefile 实验目的 了解和掌握交叉编译模式和方法: 了解和掌握makefile文件的编写 学会使用交叉编译工具和make工 ...
- Linux man 命令后面的数字含义及作用
Linux的man很强大,该手册分成很多section,使用man时可以指定不同的section来浏览,各个section意义如下: 1 - commands 2 - system calls 3 ...
- 嵌入式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 ...
- Linux环境下交叉编译mosquitto及其依赖
本文的目录索引 文章目录 **本文的目录索引** **Linux环境下交叉编译mosquitto** 1.相关依赖(两个库外加一个交叉编译工具链) 2.开发环境以及目标环境说明 3.准备适用的交叉编译 ...
- Linux 上 NetBSD 交叉编译环境搭建
Linux 上 NetBSD 交叉编译环境搭建 NetBSD 以高移植性著称,支持众多的处理器架构,并且它的代码和工具稳定性非常高,包括各种接口,工具等.并且由于 BSD 授权的宽松条件,对于构建商业 ...
- librtmp linux下 编译,交叉编译能在Atlas500(aarch64)上运行的ffmpeg+x264+librtmp
小白编译的过程,请指点 1.在Linux上准备交叉编译环境 1.1准备交叉编译链,文件夹名字叫Euler_compile_env_cross,申请把 1.2修改/etc/profile文件,在最后一行 ...
- 嵌入式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 ...
最新文章
- 【C#串口编程计划】C#串口协议解析 -- 二进制数据
- 配置一台路由器,两台电脑的重点
- SVN冲突出现原因及解决方法浅谈
- [Linux] 命令行工具
- 1339: 考试排名
- SAP Spartacus如何禁止某些标准的css样式
- OpenResity + nginx + mysq配置
- 【MFC】多线程同步—事件
- 引用Interop.SQLDMO.dll后的注意事项。
- MyBatis框架、log4j、数据库的配置文件
- 一文读懂 Spring Bean 的生命周期
- 计算机说课教案模板,说课稿通用模板
- 什么是锁?有几种锁?怎么用锁?
- onload事件和ready方法的区别
- 初学JavaScript之颜色小游戏
- Android各种时间格式转换
- Android常见内存泄漏及优化总结
- (笔记)andro studio ——ProgressDialog
- 如何在cmd中,使用cd进入指定文件目录
- Verilog语法-模块module[Day2学习笔记]
热门文章
- python数据分析面试_python数据分析面试
- CornerNet:实现demo、可视化heatmap、测试各类别精度
- linux下free源码,linux命令free源码解读:Procps free.c
- groovy怎样从sql语句中截取表名_SQL常用的基础查询语句
- 【longPressKey】长按键盘任意键(或组合键)3秒触发自定义事件(以Pause/Break键为例)
- 【必备】VSCode开发Angular的必备插件
- 【只需简单三个步骤】ACE系统前后端不分离情况下如何增加一个JSP嵌入页面
- 输入重定向,输出重定向,管道相关内容及实现方法
- python -socket -client
- 关于chrome等浏览器不支持showModalDialog的解决方案