问一个简单的问题?

发布于 2022-09-18 17:59:12 字数 919 浏览 11 评论 0

我写了一个驱动程序, 源程序由 file1.c, file2.c ,file3.c ... (file1.h,file2.h,file3.h..)等组成, 编译后要到开发板上运行。
Makefile 如下:

CC = gcc
LD = ld
INCLUDEDIR = /usr/src/linux-2.4.20-8/include

SRC0  = /home/test/src
INC0 = /home/test/inc

#-DEXPORT_SYMTAB -D__KERNEL_SYSCALLS__  -DCONFIG_MODULES
CFLAGS = -static -g -DMODULE  -D__KERNEL__  -O2 -Wall -I$(INCLUDEDIR)

INC = $(INC0)/file1.h $(INC0)/file2.h $(INC0)/file3.h
SRC = $(SRC0)/file1.c $(SRC0)/file2.c $(SRC0)/file3.c

OBJ = $(SRC:.c=.o)

all: test.o

test.o: $(OBJ)
        $(LD) -r $^ -o $@
clean:
        rm -f $(SRC0)/*.o core *.bak *.o

现在编译后的 test.o 有 1M 多,因为这个.o 文件是要到开发板上运行的,文件有点大, 我的意思是,编译后需要 LD 进行链接 吗?
有没有办法减少test.o 文件的大小(前提条件是不改变程序的功能)。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

凉城已无爱 2022-09-25 17:59:12

你要看你为什么需要链接了,不链接能运行么?如果可以,那链接也没有必要了。

顾冷 2022-09-25 17:59:12

lz看一下kernerl目录下的.config, 里面是不是debug_info打开了, 会导致.o文件过大.

允世 2022-09-25 17:59:12

不链接不行,提示找不到 file2.o 或 file3.o 里面的涵数,  因为我的主程序里面可能要用到这些涵数,  还有我去掉  -g   参数行不行

[ 本帖最后由 nflx 于 2009-5-5 10:23 编辑 ]

征棹 2022-09-25 17:59:12

strip 一下会变小。

记忆で 2022-09-25 17:59:12

原帖由 liying_gg 于 2009-5-5 10:10 发表
strip 一下会变小。

什么意思啊? 不是很明白.  能不能去掉 Makefile  里面的 -g 参数

[ 本帖最后由 nflx 于 2009-5-5 10:26 编辑 ]

许仙没带伞 2022-09-25 17:59:12

可以去掉

烟柳画桥 2022-09-25 17:59:12

去掉-g 会变小的,-g是调试用的

柠北森屋 2022-09-25 17:59:12

你的编译器怎么用虚拟机的gcc呢?难道你的板子上的cpu是x86兼容的?

上课铃就是安魂曲 2022-09-25 17:59:12

估计是x86的开发机

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文