Project

General

Profile

Feature #1539 » debian10-64位log4cplus编译.txt

log4cplus在Debian10-64位的编译过程; - pengfei xu, 08/17/2021 10:18 AM

 
1
解压或放置log4cplus压缩包或文件;
2

    
3
进入log4cplus-1.2.1目录
4
编译:
5
./configure --prefix=/home/sjw/code/log4cplus/file/ --enable-static CXXFLAGS="-std=c++0x"
6

    
7
make
8

    
9
其中 --prefix 指明了安装目录,–enable-static 指明了要生成静态库(可以不包含,这样就不会生成 .a 文件), CXXFLAGS="-std=c++0x" 指明了使用c++11(注意兼容性,如果编译库用了c++11,则引用该库时必须使用c++11)如果安装成功,则在 /home/sjw/code/log4cplus/file/lib 目录下有 liblog4cplus-1.2.so.5、liblog4cplus-1.2.so.5.1.6、liblog4cplus.la、liblog4cplus.so 文件(.so是动态链接库的静态库,.so.5是动态链接库,相当于windows下的.dll,liblog4cplus.a 是静态库,添加–enable-static 后会生成,默认只生成动态库),还有一个文件夹 pkgconfig 只包含了 一个log4cplus.pc 文件,该文件记录了安装目录、版本号等基本信息。在/home/sjw/code/log4cplus/file下有 include 文件,其中的 log4cplus 文件夹就包含了该库依赖的头文件。
10

    
11
我们这只使用liblog4cplus.a静态库文件,用于em_loger使用(此静态库名字与Windows上静态库的名字不同,编译时需要注意);
12

    
13

    
14

    
15
usr/bin/ld: i386 architecture of input file XXX.a( xxx.o) is incompatible with i386:x86-64 output
16
这个问题是原来在32位Linux 系统下编译的o文件残留,在64位编译时候所提示的编译错误。make clean 可以解决。也可手动删除提示的o文件,之后重新编译。
(2-2/2)