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

               

这里不管是你用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 选项  就是保持链接关系。

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

你可能感兴趣的:(交叉编译参数 -I -L -l 详解)