裁剪 mysql 编译_tbox的裁剪和定制化编译

默认编译出来的tbox库,支持的功能比较全,带有所有模块,并且支持ssl(依赖polarssl/openssl)、gzip(依赖zlib)、database(依赖sqlite3/mysql)。

因此生成的库文件偏大,而且会依赖三个第三方库,如果你用不到上述三个模块,完全可以自己配置编译所需要的模块,减小生成库的大小。

##v1.5.x以上版本

新版采用xmake进行构建,裁剪模块已经是相当方便了,默认情况下回去自动检测依赖的第三方库进行编译。

如果要禁用某个第三方库或者模块,只要执行xmake f --xxxx=false就行了,所有第三方库依赖都是可选,完全可以禁用。。

例如,禁用所有第三方库支持:

xmake f --polarssl=false --sqlite3=false --openssl=false --mysql=false --zlib=false

如果要最小化编译,可以禁用所有可选模块和特性:

xmake f --network=false --asio=false --charset=false --xml=false --database=false --zip=false --thread=false

tbox中使用float相关的代码,也是可以裁剪掉的,并且tbox还提供了一整套fixed16、fixed30、fixed6的定点运算库,来应付一些需要float运算的地方

这个在图形算法上用的比较多,具体使用可以参考我的另外一个图形库项目:gbox,具体的裁剪如下:

xmake f --float=false

只要执行上面的配置,跟float相关的操作接口,都会禁用,非常适合一些低端的嵌入式设备上。

如果不想编译demo,节省时间,可以禁用demo模块:

xmake f --demo=false

如果想要更小的话,就只能启用release模式了,编译发布版本,这样符号信息也被完全strip了:

xmake f -m release

如果还想更小,可以修改xmake.lua,设置优化选项为最小化编译(当然,针对ios/android等移动端,tbox默认就是这么设置的):

set_optimize("smallest")

如果把这些配置全部禁用,按照上述模式编译出来的tbox库,会相当小,虽然小了不少,但是该有的基础功能还是都有的。

也可以根据自己的需要,启用部分模块和特性。

##v1.4.x以下版本

低版本的tbox,裁剪起来稍显麻烦,具体步骤如下:

所有的编译配置都在如下两个文件中:

./tbox/plat/arch/config.h: 编译所需配置宏开关

./tbox/plat/arch/config.mak: 编译makefile所需配置

默认配置

默认情况下的配置如下:

// module

#define TB_CONFIG_MODULE_HAVE_XML

#define TB_CONFIG_MODULE_HAVE_ZIP

#define TB_CONFIG_MODULE_HAVE_ASIO

#define TB_CONFIG_MODULE_HAVE_OBJECT

#define TB_CONFIG_MODULE_HAVE_CHARSET

#define TB_CONFIG_MODULE_HAVE_DATABASE

// third party

#define TB_CONFIG_THIRD_HAVE_ZLIB

//#define TB_CONFIG_THIRD_HAVE_OPENSSL

#define TB_CONFIG_THIRD_HAVE_POLARSSL

//#define TB_CONFIG_THIRD_HAVE_MYSQL

#define TB_CONFIG_THIRD_HAVE_SQLITE3

# module

TB_CONFIG_MODULE_HAVE_XML = y

TB_CONFIG_MODULE_HAVE_ZIP = y

TB_CONFIG_MODULE_HAVE_ASIO = y

TB_CONFIG_MODULE_HAVE_OBJECT = y

TB_CONFIG_MODULE_HAVE_CHARSET = y

TB_CONFIG_MODULE_HAVE_DATABASE = y

# third party

TB_CONFIG_THIRD_HAVE_ZLIB = y

TB_CONFIG_THIRD_HAVE_OPENSSL = n

TB_CONFIG_THIRD_HAVE_POLARSSL = y

TB_CONFIG_THIRD_HAVE_MYSQL = n

TB_CONFIG_THIRD_HAVE_SQLITE3 = y

可以看到,里面启用了所有的模块,和第三方依赖库。

如果你不想使用ssl、sql则可以直接把它们禁用掉,然后:make f 下更新配置,再重新编译下就行了。

最小化编译

如果你是在嵌入式环境使用,需要最小化编译库的大小,可以禁用所有可选模块和第三方库:

// module

//#define TB_CONFIG_MODULE_HAVE_XML

//#define TB_CONFIG_MODULE_HAVE_ZIP

//#define TB_CONFIG_MODULE_HAVE_ASIO

//#define TB_CONFIG_MODULE_HAVE_OBJECT

//#define TB_CONFIG_MODULE_HAVE_CHARSET

//#define TB_CONFIG_MODULE_HAVE_DATABASE

// third party

//#define TB_CONFIG_THIRD_HAVE_ZLIB

//#define TB_CONFIG_THIRD_HAVE_OPENSSL

//#define TB_CONFIG_THIRD_HAVE_POLARSSL

//#define TB_CONFIG_THIRD_HAVE_MYSQL

//#define TB_CONFIG_THIRD_HAVE_SQLITE3

# module

TB_CONFIG_MODULE_HAVE_XML = n

TB_CONFIG_MODULE_HAVE_ZIP = n

TB_CONFIG_MODULE_HAVE_ASIO = n

TB_CONFIG_MODULE_HAVE_OBJECT = n

TB_CONFIG_MODULE_HAVE_CHARSET = n

TB_CONFIG_MODULE_HAVE_DATABASE = n

# third party

TB_CONFIG_THIRD_HAVE_ZLIB = n

TB_CONFIG_THIRD_HAVE_OPENSSL = n

TB_CONFIG_THIRD_HAVE_POLARSSL = n

TB_CONFIG_THIRD_HAVE_MYSQL = n

TB_CONFIG_THIRD_HAVE_SQLITE3 = n

然后配置最小化编译:

# 手动启用最小化编译

make f SMALL=y

make r

这样的话,编译出来的库,是相当小的,顶多几百k,而且提供最基本的stream、container、algorithm、platform、memory、libc、libm等等常用基础操作支持,不提供扩展特性:xml、ssl、database、object、asio等等。

但是对于常用操作来讲也基本够用了,主要还是得看个人的具体需求,来定制化自己最适合的编译版本。

禁用浮点运算

如果你的系统不支持浮点操作,完全可以通过如下配置禁用掉,这样的话TBOX大部分浮点操作代码就不会编译进去,库文件会更小。

而且TBOX提供了一整套定点操作的库,完全可以替代大部分常用浮点操作,效率比浮点运算更高。

//#define TB_CONFIG_TYPE_FLOAT

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值