【发布时间】:2016-07-02 05:02:22
【问题描述】:
我需要一些关于在 MinGW 下使用 GCC 编译的帮助。
假设我有 2 个文件: a.c 包含 2 个函数 a1 和 a2 b.c 包含 2 个函数 b1 和 b2。
然后我将这 2 个对象链接到一个共享库中。使用的命令如下:
gcc -c a.c
gcc -c b.c
gcc -shared -Wl, --version-script v.ver -Wl, -Map=out.map -Wl, --strip-all -o mydll.dll a.o b.o
v.ver 看起来像:
mylib {
global: a1;
a2;
local: *;
}
用于控制导出哪些函数。
通过检查映射文件,我可以看到 b.c 中的 2 个函数也包含在 dll 的 .text 部分中。
因为这个 dll 只导出 a1 和 a2,而 b1 和 b2 只在 b.c 中定义,但从未在任何地方使用。我可以在 gcc 或 ld 中添加任何选项,以便 b1 和 b2 不会内置到 dll 中,以便我可以在 dll 中节省一些空间?
谢谢
【问题讨论】: