C Plus Plus Env Prepare

本文详细介绍了在 Linux 系统上为 MongoDB C++ Driver 准备依赖库及编译步骤,包括 gcc、glibc、cppcms、cppdb、boost 和 mongo-cxx-driver 的编译配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述
图片中有个地方错了,编译mongodb driver, 必须使用系统自带的boost

编译主要分为如下,下面的所有组件都是直接并行编译,彼此之间不受影响
gcc
glibc
cppcms
cppdb
boost
mongo driver

gcc

# gcc 

# yum install -y gcc-gnat

cd /usr/local/src 
rm -rvf gcc-4.9.1 && mkdir gcc-4.9.1 && cd gcc-4.9.1 && rsync -avzP bigdata.vxlan.net::d/ide/gcc-4.9.1.tar.gz .
tar xzvf gcc-4.9.1.tar.gz
#./contrib/download_prerequisites
## using the following without a prefix, it will install on /usr/local/lib64
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --prefix=/data/c++/gcc/ --build=x86_64-redhat-linux --enable-threads=posix

# export CFLAGS="-g -O2 -fPIC"                                                                             

make -j20
make install

newBinPATH=/data/c++/gcc/bin
newIncludePATH=/data/c++/gcc/include
newLibPATH=/data/c++/gcc/lib64

# 方式二
export PATH=$newBinPATH:$PATH
export INCLUDE_PATH=$newIncludePATH:$INCLUDE_PATH
export LIBRARY_PATH=$newLibPATH:$LIBRARY_PATH
export CPLUS_INCLUDE_PATH=$newIncludePATH:$CPLUS_INCLUDE_PATH
export CPLUS_LIBRARY_PATH=$newLibPATH:$CPLUS_LIBRARY_PATH

glibc

rm -rvf /usr/local/src/glibc*
rm -rvf /usr/lcoal/test/glibc*
rm -rvf /usr/local/src/glibc-build*

cd /usr/local/src && rsync -avzP bigdata.vxlan.net::d/ide/glibc-2.14.tar.gz .         

tar xzvf glibc-2.14.tar.gz                                                                              
mkdir glibc-build && cd glibc-build                                                                      

export CFLAGS="-g -O2 -fPIC"                                                                             

../glibc-2.14/configure --prefix=/data/c++/glibc/ --enable-add-ons
make -j20                                                                           
make install  

boost

# http://www.neuraladvance.com/compiling-boost-on-linux.html                                                                                            

# 清场
rm -rvf /usr/local/src/boost*
rm -rvf /data/c++/boost*

# 下载编译安装
cd /usr/local/src && rsync -avzP bigdata.vxlan.net::d/ide/boost_1_55_0.tar.bz2 .                         

tar jxf boost_1_55_0.tar.bz2                                                                            

cd boost_1_55_0

#./bootstrap.sh --with-icu --prefix=/data/c++/boost/
./bootstrap.sh --prefix=/data/c++/boost/
./b2 -j 24
./b2 install 

# include file
rsync -avzP /data/c++/boost/include/boost /usr/include/

# 后期处理
rsync -avzP /data/c++/boost/include/* /usr/include/
rsync -avzP /data/c++/boost/lib/* /usr/local/lib/

cppcms 1.0.4

export http_proxy="http://XXXX:3128"

# cppCMS                                                                                                 
# apt-get install cmake       
# yum install cmake                                                                             

# 清场
rm -rvf /usr/local/src/cppcms*
rm -rvf /data/c++/cppcms*

# 下载编译安装
cd /usr/local/src                                                                     
rsync -avzP bigdata.vxlan.net::d/ide/cppcms-1.0.4.tar.bz2 .                                              
tar jxvf cppcms-1.0.4.tar.bz2                                                                            
cd cppcms-1.0.4                                                                                          
mkdir build && cd build                                                                                  

cmake -DCMAKE_INSTALL_PREFIX=/data/c++/cppcms ..
make -j 24                                                                                                    
make install                                                                                             

# include file
rm -rf /usr/include/cppcms
rm -rf /usr/include/booster
rsync -avzP /data/c++/cppcms/include/* /usr/include/
# rsync -avzP /data/c++/cppcms/lib/* /usr/local/lib/
# rsync -avzP /data/c++/cppcms/bin/* /bin/

export PATH=/data/c++/cppcms/bin/:$PATH

mongodriver

# mongoclient
# mongoclient C++                                                                                        
# git clone https://github.com/mongodb/mongo-cxx-driver.git                                              
# https://github.com/mongodb/mongo-cxx-driver/wiki/Download%20and%20Compile                              
# http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

# apt-get install scons -y                                                                                 
# yum install scons

# 清场
rm -rvf /usr/local/src/mongo*
rm -rvf /data/c++/mongo*

# 下载编译安装
cd /usr/local/src                                                                                        
rsync -avzP bigdata.vxlan.net::d/ide/mongo-cxx-driver .                                                  
cd mongo-cxx-driver                                                                                      
git checkout 26compat                                                                                    

# 

# export LIBRARY_PATH=/data/c++/boost/lib/
scons --use-system-boost --sharedclient --full install-mongoclient --libpath=/data/c++/boost/lib/ --cpppath=/data/c++/boost/include/ --prefix=/data/c++/mongoclientc++/ -j 20

# scons --use-system-boost --sharedclient --full install-mongoclient  --prefix=/data/c++/mongoclientc++/ -j 20

# include file
rsync -avzP /data/c++/mongoclientc++/include/mongo /usr/include/

/data/c++/cppcms/lib
/data/c++/boost/lib
/data/c++/mongoclientc++/lib


scons --prefix=/data/c++/ --use-system-boost --sharedclient --full install-mongoclient -j 24

# 后期处理
# rsync -avzP /data/c++/mongoclientc++/include/* /usr/include/
# rsync -avzP /data/c++/mongoclientc++/lib/* /usr/local/lib/

ldconfig

cppdb

# cppdb

rm -rf /usr/local/src/cppdb-trunk
cd /usr/local/src
rsync -avzP bigdata.vxlan.net::d/cppdb/cppdb-trunk .

cd cppdb-trunk
mkdir build
cd build

cmake -DCMAKE_INSTALL_PREFIX=/data/c++/cppdb ..
make -j 20

make install

# include file
rsync -avzP /data/c++/cppdb/include/cppdb /usr/include/

ldconfig

# 
cd /data
mkdir c++
cd c++ && rsync -avzP bigdata.vxlan.net::d/c++/c++.20150908.tar.gz .
tar xzvf c++.20150908.tar.gz
# /etc/ld.so.conf.d/XX.conf
echo '
/data/c++/boost/lib
/data/c++/mongoclientc++/lib
/data/c++/cppdb/lib
/data/c++/glibc/lib
/data/c++/gcc/lib64
' > /etc/ld.so.conf.d/bigdata.conf

# ldconfig
# ldconfig -p | grep cppcms

总结

# 程序运行
export PATH=/data/c++/cppcms/bin:/data/c++/gcc/bin:$PATH

# 编译的时候用到
export LIBRARY_PATH=/data/c++/gcc/lib64:/data/c++/cppcms/lib:/data/c++/mongoclientc++/lib:/data/c++/boost/lib:/data/c++/cppdb/lib:/data/c++/mine/lib/:/data/c++/glibc/lib

# 运行的时候用到
export LD_LIBRARY_PATH=/data/c++/gcc/lib64:/data/c++/cppcms/lib:/data/c++/mongoclientc++/lib:/data/c++/boost/lib:/data/c++/cppdb/lib:/data/c++/mine/lib/:/data/c++/glibc/lib

# cppcms用gcc 4.4.7 或者 4.9.1 貌似都不所谓
/home/lzw/pypro/chatglm_env/lib/python3.12/site-packages/torch/cuda/__init__.py:789: UserWarning: Can't initialize NVML warnings.warn("Can't initialize NVML") Loading checkpoint shards: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:10<00:00, 1.43s/it] 模型加载成功,当前设备:cuda:0 Traceback (most recent call last): File "/home/lzw/pypro/dialogue_processor.py", line 196, in <module> LLMChatSession.batch_process_csv( File "/home/lzw/pypro/dialogue_processor.py", line 185, in batch_process_csv session.send(prompt) File "/home/lzw/pypro/dialogue_processor.py", line 112, in send inputs = self.tokenizer(prompt_text, return_tensors="pt").to(self.model.device) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/lzw/pypro/chatglm_env/lib/python3.12/site-packages/transformers/tokenization_utils_base.py", line 2867, in __call__ encodings = self._call_one(text=text, text_pair=text_pair, **all_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/lzw/pypro/chatglm_env/lib/python3.12/site-packages/transformers/tokenization_utils_base.py", line 2977, in _call_one return self.encode_plus( ^^^^^^^^^^^^^^^^^ File "/home/lzw/pypro/chatglm_env/lib/python3.12/site-packages/transformers/tokenization_utils_base.py", line 3052, in encode_plus return self._encode_plus( ^^^^^^^^^^^^^^^^^^ File "/home/lzw/pypro/chatglm_env/lib/python3.12/site-packages/transformers/tokenization_utils.py", line 803, in _encode_plus return self.prepare_for_model( ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/lzw/pypro/chatglm_env/lib/python3.12/site-packages/transformers/tokenization_utils_base.py", line 3548, in prepare_for_model encoded_inputs = self.pad( ^^^^^^^^^ File "/home/lzw/pypro/chatglm_env/lib/python3.12/site-packages/transformers/tokenization_utils_base.py", line 3350, in pad encoded_inputs = self._pad( ^^^^^^^^^^ TypeError: ChatGLMTokenizer._pad() got an unexpected keyword argument 'padding_side' 如何解决
05-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值