C-在Ubuntu上编译动态链接库,并获得未识别的调试输出级别



我正在尝试使用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放置在相同的目录中并能够要编译,但我觉得您应该能够链接包含该代码的静态库,这一定很简单。

-g选项(可选(是调试级别:

请求调试信息,还使用级别来指定多少信息。默认级别是2。

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

对于您的更新#2错误,这是一个编译错误(gcc的预处理器找不到gpc.h标头 - 您需要使该文件可见到gcc,要么安装/移动标头或告诉它使用-I选项在更多位置查找标题(,这与您的原始错误不同(调用gcc的错误(。

相关内容

最新更新