您的位置:首页 > 其它

交叉编译参数 -I -L -l 详解

2015-12-29 14:52 288 查看
这里不管是你用gcc还是用arm-linux-gcc都是实用的。

当你下载一些freetype,libjpeg。你得先.configure,make make install 这里我主要讲一下一些参数怎么配置,具体怎么安装这些库文件,下篇文章将重点讲解。

这三个参数是很重要的。

--build=BUILD configure for building on BUILD [guessed]
/* 在哪个平台上进行编译,默认pc机,这里不用修改 */

--host=HOST cross-compile to build programs to run on HOST [BUILD] /* 编译出的文件运行在哪里,默认pc机 */

--prefix=PREFIX install architecture-independent files in PREFIX /* 安装的文件路径,自己指定 */

我习惯如下配置:

./configure --prefix=$PWD/tmp/ --host=arm-linux /* 是在当前路径下面创建了一个tmp文件目录,安装在tmp目录*/

make && make install

上面讲的是安装库文件,下面我们讲讲怎么运用这些库文件来编译我们的程序。

先讲讲arm-linux-gcc几个常用的参数

-I 指定我们程序所需的头文件所在的路径,也就是我们刚刚编译出来库文件里面的头文件路径

-L(大写) 指定我们程序所需的库文件所在的路径,也就是我们刚刚编译出来库文件里面的库文件路径

-l(小写) 指定我们所需要的库,

上面这三个参数是很重要的,一定要理解过来加以运用。

方法一:我们交叉编译的时候自己去指定所需要的库文件,头文件。

arm-linux-gcc -o jpg2rgb jpg2rgb.c -I /work/projects/13.libjpeg/libjpeg-turbo-1.2.1/tmp/include -L /work/projects/13.libjpeg/libjpeg-turbo-1.2.1/tmp/lib -ljpeg

上面这种方法实在是太麻烦了,不建议使用,除非你只用一次这个库文件或者头文件。

方法二:

这里我扩展一点知识,就拿交叉编译工具链来说,我们用arm-linux-gcc的时候虚拟机怎么能够识别,我们没有跟详细的交叉编译路径,这里我得说一下,我们把这个路径一般放在环境变量中区了,当编译器在usr/lib 这些里面找不到的的时候就回去环境变量中找。

上面我们写的程序使用arm-linux-gcc来编译的,但是需要运用到jpeg库文件,我们可以把这些库文件,头文件拷贝到交叉编译下面的库文件和头文件,这样编译器就可以在arm-linux-gcc下面找到头文件,库文件了。具体在交叉编译器那个目录下,这个自己琢磨,因为不同版本编译器的路径可能不一样。下面我列出常用的arm-linux-gcc-4.3.2的头文件和库文件的路径。

/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include /* 头文件路径 */

/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib /* 库文件路径 */

强调一下:复制库文件的时候加 -d 选项 就是保持链接关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: