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++ 编译器的选项。这两个变量实际上涵盖了编译和汇编两个步骤。两者的参数选项如下:

a11be473e8cb81eae5573ba65fa089c5.png

其中: -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的功能类似。

##参考链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值