
静态编译goahead
发布日期:2021-05-15 00:17:18
浏览次数:14
分类:精选文章
本文共 1950 字,大约阅读时间需要 6 分钟。
Embedthis GoAhead静态编译指南:优化Makefile配置
在编译Embedthis GoAhead服务时,如果希望生成静态可执行文件并避免依赖外部动态链接库,可以通过修改Makefile的配置实现。以下是针对Ubuntu系统的详细指南。
1. Makefile修改方案
1.1 CFLAGS修改
- 修改
CFLAGS
,将-fPIC
替换为-static
。
CFLAGS += -static
1.2 LDFLAGS修改
- 将
LDFLAGS
设置为静态链接标志。
LDFLAGS += '-static'
1.3 库文件类型
- 将所有
libgo.so
文件替换为静态库libgo.a
。
1.4 静态库生成规则
- 修改生成静态库的规则,使用
ar
命令创建静态库。
$(BUILD)/bin/libgo.a: $(DEPS_34) @echo ' [Link] $(BUILD)/bin/libgo.a' $(AR) -rcs $(BUILD)/bin/libgo.a $(BUILD)/obj/action.o $(BUILD)/obj/alloc.o $(BUILD)/obj/auth.o ... stimate所有目标文件。
2. 编译命令优化
在编译时,确保使用静态链接参数:
# 生成共享库(示例)$(CC) -shared -o $(BUILD)/bin/libgo.a $(LDFLAGS) $(BUILD)/obj/action.o $(BUILD)/obj/alloc.o ...
如果需要生成静态库,请确保使用与静态相关的所有参数。
3. 工具链准备
确保已安装:
gcc
(版本支持静态编译)libneedle
或其他静态依赖库
4. 逐步操作
4.1 清洁构建
make clean
4.2 编译
make
4.3 验证
编译完成后,检查生成文件:
file ./build/linux-x64-default/bin/goahead
输出示例:
./build/linux-x64-default/bin/goahead: ELF 64-bit LSB executable, x86-64,版本1 (GNU/Linux),静态链接,适用于 GNU/Linux 2.6.32。
5. 策略优化
5.1 进行文件优化
- 格式化代码
- 去除冗余注释
- 最小化内部函数调用
5.2 使用strip命令
strip ./build/linux-x64-default/bin/goahead
5.3 安装
make install
6. 修改后的Makefile示例
# goahead-linux-default.mk -- 负载生成Embedthis GoAhead社区版的MakefileNAME := goaheadVERSION := 4.1.3PROFILE ?= defaultARCH ?= $(shell uname -m | sed 's/i.86/x86/;s/x86_64/x64/;s/arm.*/arm/;s/mips.*/mips/')CC_ARCH ?= $(shell echo $(ARCH) | sed 's/x86/i686/;s/x64/x86_64/')OS := linuxCC := gccAR := arCONFIG := $(OS)-$(ARCH)-$(PROFILE)BUILD := build/$(CONFIG)LBIN := $(BUILD)/binPATH := $(LBIN):$(PATH)ME_ROOT_PREFIX := $(ME_BASE_PREFIX)/usr/localME_DATA_PREFIX := $(ME_ROOT_PREFIX)/varME_APP_PREFIX := $(ME_APP_PREFIX)/$(VERSION)... (完整内容请参考原始文件)
通过以上优化,您可以成功在Ubuntu系统上为Embedthis GoAhead生成静态编译版本,避免依赖外部库并提高性能。如果有更多具体需求,请参考官方文档或社区支持。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月09日 06时25分38秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python IO编程
2019-03-06
CSS入门总结
2019-03-06
使用 TortoiseGit 时,报 Access denied 错误
2019-03-06
基于 HTML5 WebGL 的污水处理厂泵站自控系统
2019-03-06
[系列] Go gRPC 调试工具
2019-03-06
django-表单之模型表单渲染(六)
2019-03-06
c++之程序流程控制
2019-03-06
spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
2019-03-06
httprunner学习23-加解密
2019-03-06
有道云笔记 同步到我的博客园
2019-03-06
李笑来必读书籍整理
2021-05-09
http头部 Expect
2021-05-09
Hadoop(十六)之使用Combiner优化MapReduce
2021-05-09
《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
2019-03-06
CoreCLR源码探索(八) JIT的工作原理(详解篇)
2019-03-06
IOS开发Swift笔记16-错误处理
2019-03-07
flume使用中的一些常见错误解决办法 (地址已经使用)
2019-03-07
andriod 开发错误记录
2019-03-07
C语言编译错误列表
2019-03-07