gpt4 book ai didi

c - 在C99模式下链接非C99静态库

转载 作者:行者123 更新时间:2023-11-30 15:47:04 25 4
gpt4 key购买 nike

我有一个静态库,是用 gcc 编译的,没有 c99 模式。我正在尝试使用 gcc -std=c99 在编译中链接它。这给了我一个错误:

对“functionName”的 undefined reference

这里的functionName是静态库中的函数。

这是我的汇编:

gcc -std=c99 -g -I../ -Llib/ -lmylib test.c ../file1.c ../file2.c -o test  

我在这里使用C99,因为我在test.c中的代码#includes头文件,其实现使用C99标准。

静态库(lib/libmylib.a)未使用c99标准编译,因为它的代码使用了一些无法在C99模式下编译的库(但在没有c99标志的情况下编译)。

我还尝试将 -L 和 -l 标志的顺序更改为末尾并紧接在 gcc -std=c99 之后,但它给出了相同的“ undefined reference ”错误。

如何将它们链接在一起?

谢谢。

编辑:我提到的 functionName 函数是 setupStacktrace() 的假名,如下所示:http://pastebin.com/2RbEEPaj 。它的签名是void setupStacktrace();

最佳答案

命令行参数的顺序很重要。按照您现在的方式,链接器会遍历您的静态库,意识到到目前为止没有任何东西需要它提供的任何内容,然后丢弃其中的所有内容。这样做:

gcc -std=c99 -g -I../ -Llib/  test.c ../file1.c ../file2.c -lmylib -o test

关于c - 在C99模式下链接非C99静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17753074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com