我正在尝试使用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
的错误(。