在Ubuntu上编译动态链接库并获得无法识别的调试输出级别

时间:2018-03-26 15:19:17

标签: c ubuntu gcc compiler-errors g++

我正在尝试使用GCC在Ubuntu上编译DLL(.so)文件。该库有一个依赖项,它是一个静态库,我可以用GCC编译。我使用以下命令行并产生以下错误:

gcc -shared -Bstatic -gpclib.a -fPIC gpcdll.h gpcdll.c

输出:

  

cc1:错误:无法识别的调试输出级别'pclib.a'

     

cc1:错误:无法识别的调试输出级别'pclib.a'

我尝试使用谷歌搜索此错误但没有成功。

更新

我根据建议试图运行以下内容:

gcc -shared -Bstatic -lgpclib.a -fPIC gpcdll.h gpcdll.c

结果:

  

gpcdll.c:19:17:致命错误:gpc.h:没有这样的文件或目录    #include" gpc.h"                    ^   这对我来说很有意义,因为我的静态库叫做gpclib.a而不是lgpclib.a

更新#3:我尝试使用-g运行以获取更多调试信息,但只获得了之前生成的信息。

更新#4:gcc -shared -lgpc -gpclib.a -fPIC gpcdll.h gpcdll.c产生相同的错误消息。

更新#5:我试过了:

gcc -shared -Wl,-Bstatic -L.\ -lgpclib.a -fPIC gpcdll.h gpcdll.c

应该将当前工作目录指定为搜索路径,但它仍然说:

  

gpcdll.c:19:17:致命错误:gpc.h:没有这样的文件或目录

更新#6:所以我终于感到沮丧并从静态库中删除了所有代码(gpc.h和gpc.c)并将它们放在与gpcdll.h gpcdll.c相同的目录中并且能够编译,但我觉得你应该能够链接一个包含该代码的静态库,它必须是我所缺少的简单。

1 个答案:

答案 0 :(得分:0)

-g option可选择调试级别:

  

请求调试信息并使用级别指定信息量。默认级别为2.

gcc只是解析pclib.a,好像它是一个调试输出级别。

对于您的Update#2错误,这是编译错误(gcc的预处理器无法找到gpc.h标头 - 您需要将该文件显示为{{1} },安装/移动标题或告诉它使用-I option在更多地方查找标题,这与原始错误不同(调用gcc时出错)。