话不多说,编译CMake, TcMalloc, jsoncpp 以及一些其他的库…

C++直接采用 devtoolset-10

环境安装:

 

20240923 tkxiong cmake需要先安装 openssl。

【编译】openssl 3.3.2

 

CMake 版本3.21.1:

环境配置:

重启bash, 查看CMake版本:

 

TCMalloc 编译命令:

–prefix 就是生成路径,需要绝对地址。

 

如果用cmake的话:

这个是编译完整版,取 libtcmalloc_minimal.a 用即可.

 

Jsoncpp

-DCMAKE_INSTALL_PREFIX= 就是install路径,可以用相对地址。

 

20240925 tkxiong Curl库的问题更多

【编译】curl 支持 HTTP2/HTTP3

早期低版本使用 7.83.0 版本

下文的want_h2_path, 在7.83.0版本中为: want_nghttp2_pkg_config_path

20240924 tkxiong 这里不应该采用修改 configure 文件的方式,而应该在nghttp2安装目录下新建符号链接从lib指向lib64。

with-openssl 后面不带地址说明使用系统openssl地址。

 

git clone 编译方式:

 

问题还是没解决。 —— 最后是curl修复了代码.

 

libuv

 

zlib 1.2.11

 

protobuf 3.14.0.0

 

re2

 

cares-1_18_1

 

abseil-cpp 20210324.2

 

krb5 – kafka依赖库

这个库编译.a文件有问题,之前是直接安装的。

 

Cyrus SASL 2.1.28 – kafka依赖库

Warning: 2.1.28版本不支持OpenSSL 3.x,Cyrus-sasl-2.1.29 release 且官方暂时没有计划出新版本支持。

这里选择编译静态库, 同时保留动态库(参数 --disable-shared 参数同时会引起编译时不使用动态库,导致其他的依赖库找不到)。

增加参数 CFLAGS="-fPIC" 将 -fPIC 标志传递给编译器,确保所有编译的对象文件支持位置无关代码。

这样 libsasl2.a 静态库就可以被用于生成共享库或者其他需要位置无关代码的场景了。

我们可以尝试在编译完之后删除 .so 文件。 —— 试了下,不行,会导致rdkafka编译不过。

 

rdkafka-2.4.3

用make编译就需要手动删除.so文件,同时要注意sasl2需要加入编译。

另外参数 --disable-shared 参数同时会引起编译时不使用动态库,导致其他的依赖库找不到。这个实现与预期不一致,认为是库的bug。

删除了 --enable-gssapi 参数,因为不支持openssl-3.x。

configure 然后 make编译完之后会有一串警告:

注意 -lzstd -lsasl2 这两个如果没有,是不正常的。

注意2 因为删除了 sasl2 所以信息又变了。

 

也可以使用CMake的方式编译:

用CMake编译就显式指定不用curl库。(目前看起来问题比configure更大)

 

【编译】CMake, TCMalloc, jsoncpp, nghttp2, openssl, curl
Tagged on:     
0 0 投票数
Article Rating
订阅评论
提醒

0 评论
最新
最旧 最多投票
内联反馈
查看所有评论