Protobuf building

       最近的项目中使用了protobuf,由于项目是跨平台的,需要编译四个版本的protobuf库来使用,分别是以下几种:


1.  Linux-32bit
2.  Linux-64bit
3.  Solaris(10)-32bit
4.  Solaris(10)-64bit


       我们有两台build server,分别是Linux-x86_64和Solaris(10)-sparc,需要进行交叉编译,生成四个版本。编译过程中,遇到了一些问题,最终得到解决,特地分享一下;另外,也是抛砖引玉,欢迎大家讨论交流。

1.  Linux-32bit
./configure LDFLAGS="-s" CFLAGS=-m32 CXXFLAGS=-m32 FFLAGS=-m32 FCFLAGS=-m32 --prefix=/u/yasaken/bin/protobuf_linux_32 --build=x86_64-gnu-linux --host=x86-gnu-linux --target=x86-gnu-linux

make 
make install


2.  Lniux-64bit
./configure LDFLAGS="-s" CFLAGS=-m64 CXXFLAGS=-m64 FFLAGS=-m64 FCFLAGS=-m64 --prefix=/u/yasaken/bin/protobuf_linux_64 --build=x86_64-gnu-linux --host=x86_64-gnu-linux --target=x86_64-gnu-linux

make 
make install


3.  Solaris-32bit
./configure LDFLAGS="-s -L${PWD}/src/solaris" CFLAGS=-m32 CXXFLAGS=-m32 FFLAGS=-m32 FCFLAGS=-m32 --prefix=/u/yasaken/bin/protobuf_solaris_32 --build=sparc-sun-solaris --host=sparc-sun-solaris --target=sparc-sun-solaris

make 
make install


4.  Solaris-64bit
  
修改文件“protobuf-2.4.1/src/solaris/libstdc++.la”如下,否则编译不过。
(1)  dependency_libs='-L/lib/64 -lc -lm -L/usr/sfw/lib/64 -lgcc_s'
(2)  libdir='/usr/sfw/lib/64'


./configure LDFLAGS="-s -L${PWD}/src/solaris" CFLAGS=-m64 CXXFLAGS=-m64 FFLAGS=-m64 FCFLAGS=-m64 --prefix=/u/yasaken/bin/protobuf_solaris_64 --build=sparc-sun-solaris --host=sparc64-sun-solaris --target=sparc64-sun-solaris

make 
make install


其中:
--prefix                     是安装目录;
--LDFLAGS="-s"      消除库的依赖性;
--CFLAGS                C compiler flags;
--CXXFLAGS            C++ compiler flags;
--FCFLAGS             设置compiler是32bit还是64bit;
--build                      configure for building on BUILD;
--host                       cross-compile to build programs to run on HOST;
--target                     configure for building compilers for TARGET; 

你可能感兴趣的:(linux,Solaris,Build,compiler,64bit,X86)