是否可以直接使用 'gcc' 命令创建静态库?
Is it possible to create a static library directly using 'gcc' command?
创建静态库,一般来说,我们按照两步法。首先,我们使用“gcc”命令为每个源文件创建目标文件。其次,我们将使用“ar”命令捆绑所有目标文件。
我知道 'gcc' 和 'ar' 是两个独立的组件。但是,我想确认是否可以使用 'gcc' 命令一步创建静态库?
如果是,谁能建议我们如何做到这一点?
注:本题与如何创建静态库无关。这个问题纯粹是为了得到确认。我参考了 gcc 手册输入 page 但我找不到方法。
让我知道你对此的看法。
无法仅使用 gcc
创建存档库。
仅使用 GCC 的静态库的近似方法是创建一个包含所有组件文件的可重定位目标文件:
gcc -r -o libobject.o object1.o object2.o object3.o
这将创建一个目标文件 libobject.o
,其中包含目标文件列表(object1.o
、object2.o
、object3.o
)中的所有目标代码。它可以与使用任何函数的任何代码链接以创建可执行文件。
gcc -o program program.o libobject.o
请注意,您必须在链接器命令行上提供复合目标文件的路径——使用库搜索无法找到它。
然而,这只是静态库的近似值,因为对于库,只有提供所用函数的目标文件链接到可执行文件中,而对于像 libobject.o
这样的复合目标文件,所有所有目标文件中的代码始终链接到可执行文件中。您很少会在单个程序中使用库提供的每个函数。
创建静态库,一般来说,我们按照两步法。首先,我们使用“gcc”命令为每个源文件创建目标文件。其次,我们将使用“ar”命令捆绑所有目标文件。
我知道 'gcc' 和 'ar' 是两个独立的组件。但是,我想确认是否可以使用 'gcc' 命令一步创建静态库? 如果是,谁能建议我们如何做到这一点?
注:本题与如何创建静态库无关。这个问题纯粹是为了得到确认。我参考了 gcc 手册输入 page 但我找不到方法。
让我知道你对此的看法。
无法仅使用 gcc
创建存档库。
仅使用 GCC 的静态库的近似方法是创建一个包含所有组件文件的可重定位目标文件:
gcc -r -o libobject.o object1.o object2.o object3.o
这将创建一个目标文件 libobject.o
,其中包含目标文件列表(object1.o
、object2.o
、object3.o
)中的所有目标代码。它可以与使用任何函数的任何代码链接以创建可执行文件。
gcc -o program program.o libobject.o
请注意,您必须在链接器命令行上提供复合目标文件的路径——使用库搜索无法找到它。
然而,这只是静态库的近似值,因为对于库,只有提供所用函数的目标文件链接到可执行文件中,而对于像 libobject.o
这样的复合目标文件,所有所有目标文件中的代码始终链接到可执行文件中。您很少会在单个程序中使用库提供的每个函数。