linux开源库的编译方法

1、运行configure生成Makefile
(1)–help
输出帮助信息.即使是有经验的用户也偶尔需要使用使用’–help’选项,因为一个复杂的项目会包含附加的选项。例如:GCC包里的’configure’脚本就包含了允许你控制是否生成和在GCC中使用GNU汇编器的选项。

(2)–prefix=preFIX(文件安装的位置)
‘–prefix’是最常用的选项。制作出的’Makefile’会查看随此选项传递的参数,当一个包在安装时可以彻底的重新安置他的结构独立部分。 举一个例子,当安装一个包:Emacs,下面的命令将会使Emacs被安装到”/opt/gnu/share”:

$ ./configure –prefix=/opt/gnu/share

(3)–exec-prefix=EPREFIX
与’–prefix’选项类似,但是他是用来设置结构依赖的文件的安装位置。编译好的’emacs’二进制文件就是这样一个文件,如果没有设置这个选项的话,默认使用的选项值将被设为和’–prefix’选项值一样。
以某嵌入式linux编译环境为例:配置为/media/data/adt_toolchain/sysroots/cortexa9-vfp-neon-telechips-linux-gnueabi/usr

(4)–build=BUILD
指定软件包安装的系统平台,如果没有指定,默认值将是’–host’选项的值。

(5)–host=HOST
指定软件运行的系统平台,如果没有指定,将会运行`config.guess’来检测。

(6)举例:编译devil库
源码包里没有CMakeLists.txt,使用configure配置:
在终端执行下列命令:
cd /home/ubuntu/devil-1.7.8
autoreconf -i
export CFLAGS=-Dpng_set_gray_1_2_4_to_8=png_set_expand_gray_1_2_4_to_8
./configure --prefix=/home/ubuntu/test/usr --exec-prefix=/home/ubuntu/test/usr --host=arm-telechips-linux-gnueabi --enable-ILU
make clean
make
sudo make install

2、运行cmake生成Makefile
如果开源库的源码目录下有CMakeLists.txt,说明可以使用cmake来生成Makefile。

(1)安装高版本的cmake
cmake-3.6.3-Linux-x86_64.tar.gz可以从网上下载
sudo cp cmake-3.6.3-Linux-x86_64.tar.gz /usr/.
cd /usr
sudo tar xvzf cmake-3.6.3-Linux-x86_64.tar.gz
sudo ln -s /usr/cmake-3.6.3-Linux-x86_64/bin/* /usr/bin/

(2)如果使用cmake编译,需要在CMakeLists.txt中加入:
#add by worker for cross compiler begin
set (CMAKE_SYSTEM_NAME Linux)
set (CMAKE_SYSROOT “/media/data/adt_toolchain/sysroots/cortexa9-vfp-neon-telechips-linux-gnueabi”)
set (TOOLCHAIN_DIR “/media/data/adt_toolchain/sysroots/x86_64-oesdk-linux/usr/bin/arm-telechips-linux-gnueabi”)
set (CMAKE_FIND_ROOT_PATH “/media/data/adt_toolchain/sysroots/cortexa9-vfp-neon-telechips-linux-gnueabi”)
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE “/media/data/adt_toolchain/sysroots/cortexa9-vfp-neon-telechips-linux-gnueabi/usr/include”)
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY “/media/data/adt_toolchain/sysroots/cortexa9-vfp-neon-telechips-linux-gnueabi/usr/lib”)
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set (CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/arm-telechips-linux-gnueabi-gcc)
set (CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/arm-telechips-linux-gnueabi-g++)
#add by worker for cross compiler end

(3)以编译epoxy为例
这个库使用configure配置,编译不成功
使用cmake编译成功
cd /home/ubuntu/test/libepoxy-master
mkdir build
cd build
cmake …/
make

3、源码目录下configure和CMakeLists.txt都没有,只能自己动手写Makefile了
例如:编译FreeImage
由于源码目录下没有configure文件和CMakeLists.txt,根据Makefile.gun改了一个makefile文件:Makefile.linux
在终端执行下列命令:
cd /home/ubuntu/test/FreeImage
make clean
make -f Makefile.linux

4、一般出现的问题就是依赖的库找不到
库文件编译完成后,会生成一个.pc文件,pkg-config命令会用到它。
以某嵌入式linux平台为例,.pc文件放在:/media/data/adt_toolchain/sysroots/cortexa9-vfp-neon-telechips-linux-gnueabi/usr/lib/pkgconfig

pkg-config 是一个命令程序,他通过一个通用的参数从 .pc 文件里面获取一些数据来帮助调用某个函数库的程序得到正确的编译参数。这是开发用的程序,如果你不需要开发编译程序。这部分都是 *-devel 包里面的数据。这些包卸载即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值