wsdlpull:与g++; 我对用C++编程C++很有新意,并且有很大的问题要解决 WSDL拉库< /代码>的工作。版本是1.24
我按照以下步骤进行安装: 然后,我将wsdlpull:与g++; 我对用C++编程C++很有新意,并且有很大的问题要解决 WSDL拉库< /代码>的工作。版本是1.24,c++,g++,C++,G++,我按照以下步骤进行安装: 然后,我将print.cpp文件从示例复制到“prefix”-目录。下一步将是“在include路径中添加$(前缀)/include,并将$(前缀)/libs和-lwsdl-lschema-lxmlpull添加到LDFLAGS”。第一个问题是没有文件夹“libs”,只有“lib”,而include文件夹中有另一个名为wsdlpull的文件夹。因此,我输入了以下命令: g++ -I include/wsdlpull -L lib -lwsdl -lschema -lxml
print.cpp
文件从示例复制到“prefix”-目录。下一步将是“在include路径中添加$(前缀)/include
,并将$(前缀)/libs
和-lwsdl-lschema-lxmlpull
添加到LDFLAGS
”。第一个问题是没有文件夹“libs”,只有“lib”,而include文件夹中有另一个名为wsdlpull
的文件夹。因此,我输入了以下命令:
g++ -I include/wsdlpull -L lib -lwsdl -lschema -lxmlpull -o print print.cpp
这导致了以下错误:
/usr/bin/ld:找不到-lwsdl/usr/bin/ld:找不到-lschema
/usr/bin/ld:找不到-lxmlpull
collect2:错误:ld返回了1个退出状态
我不知道这意味着什么,为什么当我指向“lib”时它会出现在/usr/bin/ld中?当您使用
-L lib
时,这意味着,lib
dir在pwd
中,您正在执行make
操作。检查您是否说过lib
确实可用
为了简化操作,您可以给出lib
文件夹的绝对路径。
i、 e-L/lib
。这将有助于make
查看lib
,而不会产生任何混乱
接下来,您可能希望明确指定libwsdl
是静态库还是共享库。尽管这是可选的
或者,最好的解决方案是将库放置在系统libs位置,即/lib或/usr/lib或/use/local/lib
并运行ldconfig
,以便链接器/加载器知道新添加的库存在的位置。在这种情况下,您可以简单地发出-lwsdl
,而无需指定-L
标志
有关更多信息,请参阅。我试图给出-L/lib,但它不起作用。我可能认为教程有问题,因为库命名约定不是这样的吗?例如,如果我有一个libwsdl.so文件,那么我会在命令中写入-lwsdl(删除前缀和后缀)?但是我没有那个文件,取而代之的是“libwsdlpull.so”等等。因此,我尝试了“g++-I include/wsdlpull-o print print.cpp-L/home/jesse/Dropbox/Programmering/C++/test/lib-lwsdlpull-lwsdlpullschema-lwsdlpullxml”,它可以编译,但不能运行(“加载共享库时出错:libwsdlpull.so.1”)。什么是
libwsdlpull.so
的SONAME
?您可以使用objdump获取SONAME。objdump-p | grep sonameth libwsdlpull.so是libwsdlpull.so.1,它的SONAME也是libwsdlpull.so.1Hmm。ls-llibwsdlpull.so的输出是什么?它是否指向libwsdlpull.so.1
?加载/链接共享库时,链接器将始终看到SONAME。您的库名是libwsdlpull.so
,而SONAME
是libwsdlpull.so.1
。因此问题就来了。libwsdlpull.so
build中有一个错误。通常,库名称上会有版本控制信息,但在SONAME
上不会有版本控制信息。您是否自己构建了libwsdlpull.so.1
?
g++ -I include/wsdlpull -L lib -lwsdl -lschema -lxmlpull -o print print.cpp