Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linker g++;未找到链接libruli.so的符号_Linker_G++_Shared Objects - Fatal编程技术网

Linker g++;未找到链接libruli.so的符号

Linker g++;未找到链接libruli.so的符号,linker,g++,shared-objects,Linker,G++,Shared Objects,关于为什么没有找到这些符号,我能查到更多的想法,真是太好了。是的,在/etc/ld.so.conf中设置了so库 (http://www.nongnu.org/ruli/) g++--版本 g++(GCC)3.3.3(SuSE Linux) g++-D_xx_uu-I../se/yy/xx/business/ss/utility/asn-I/usr/local/include/mysql++-I/usr/include/mysql-O0-g3-Wall-c-fmessage length=0-M

关于为什么没有找到这些符号,我能查到更多的想法,真是太好了。是的,在/etc/ld.so.conf中设置了so库 (http://www.nongnu.org/ruli/)

g++--版本 g++(GCC)3.3.3(SuSE Linux)

g++-D_xx_uu-I../se/yy/xx/business/ss/utility/asn-I/usr/local/include/mysql++-I/usr/include/mysql-O0-g3-Wall-c-fmessage length=0-MMD-MP-MF“se/yy/xx/business/ss/communication/ClientSocketThread.D”—MT“se/yy/xx/business/ss/communication/ClientSocketThread.D”—o“se/yy/nn是/business/ss/communication/ClientSocketThread.o”“../se/yy/xx/business/ss/communication/ClientSocketThread.cpp”

////

就我所见,所有符号在库中看起来都正常

 sudo readelf -Ws /usr/local/lib/libruli.so | grep ruli_sync
    65: 0000ee90   373 FUNC    GLOBAL DEFAULT   11 ruli_sync_smtp_query@@libruli4
   105: 0000eb90   103 FUNC    GLOBAL DEFAULT   11 ruli_sync_rcode@@libruli4
   126: 0000ed10   376 FUNC    GLOBAL DEFAULT   11 ruli_sync_http_query@@libruli4
   127: 0000eb20   103 FUNC    GLOBAL DEFAULT   11 ruli_sync_srv_list@@libruli4
   162: 0000ec00   103 FUNC    GLOBAL DEFAULT   11 ruli_sync_srv_code@@libruli4
   197: 0000f010   373 FUNC    GLOBAL DEFAULT   11 ruli_sync_query@@libruli4
   236: 0000ec70   158 FUNC    GLOBAL DEFAULT   11 ruli_sync_delete@@libruli4

 sudo readelf -Ws /usr/local/lib/libruli.so | grep ruli_list
    35: 00004c20    66 FUNC    GLOBAL DEFAULT   11 ruli_list_capacity@@libruli4
    63: 00004cf0   170 FUNC    GLOBAL DEFAULT   11 ruli_list_clean@@libruli4
    64: 00004ea0   217 FUNC    GLOBAL DEFAULT   11 ruli_list_dispose@@libruli4
    74: 000050b0    67 FUNC    GLOBAL DEFAULT   11 ruli_list_new@@libruli4
    75: 00004c70   127 FUNC    GLOBAL DEFAULT   11 ruli_list_size@@libruli4
    92: 0001201c     4 OBJECT  GLOBAL DEFAULT   14 ruli_list_malloc@@libruli4
    99: 00004b90   140 FUNC    GLOBAL DEFAULT   11 ruli_list_push@@libruli4
   100: 000048b0   271 FUNC    GLOBAL DEFAULT   11 ruli_list_shift_at@@libruli4
   104: 00012014     4 OBJECT  GLOBAL DEFAULT   14 ruli_list_free@@libruli4
   108: 00004da0   140 FUNC    GLOBAL DEFAULT   11 ruli_list_clean_trivial@@libruli4
   118: 00004820   131 FUNC    GLOBAL DEFAULT   11 ruli_list_top@@libruli4
   133: 00012018     4 OBJECT  GLOBAL DEFAULT   14 ruli_list_realloc@@libruli4
   134: 00004f80   150 FUNC    GLOBAL DEFAULT   11 ruli_list_dispose_trivial@@libruli4
   140: 00004790   133 FUNC    GLOBAL DEFAULT   11 ruli_list_pop@@libruli4
   156: 000044b0    23 FUNC    GLOBAL DEFAULT   11 ruli_list_errstr@@libruli4
   161: 000046e0   176 FUNC    GLOBAL DEFAULT   11 ruli_list_drop@@libruli4
   169: 00004e30   112 FUNC    GLOBAL DEFAULT   11 ruli_list_delete@@libruli4
   209: 00005020   142 FUNC    GLOBAL DEFAULT   11 ruli_list_new_cap@@libruli4
   220: 00004580   165 FUNC    GLOBAL DEFAULT   11 ruli_list_set@@libruli4
   222: 00004a70   274 FUNC    GLOBAL DEFAULT   11 ruli_list_insert_at@@libruli4
   232: 00004630   162 FUNC    GLOBAL DEFAULT   11 ruli_list_get@@libruli4
   235: 000044d0   161 FUNC    GLOBAL DEFAULT   11 ruli_list_prune@@libruli4


 sudo readelf -Ws /usr/local/lib/libruli.so | grep ruli_dname_decode
   229: 00006de0   256 FUNC    GLOBAL DEFAULT   11 ruli_dname_decode@@libruli4

 sudo readelf -Ws /usr/local/lib/libruli.so | grep ruli_in_snp
   165: 00005f00   125 FUNC    GLOBAL DEFAULT   11 ruli_in_snprint@@libruli4
直到av功能测试(剪切/粘贴samma kod)和av测试功能测试(ruli lib)出现问题时,才进行测试

gcc   -O2 -pipe -Wall -g -I../src -I/usr/local/oop/include -c srvsearch.c
gcc   -O2 -pipe -Wall -g -I../src -I/usr/local/oop/include -c parse_options.c
gcc   -O2 -pipe -Wall -g -I../src -I/usr/local/oop/include -c stdout_srv_list.c
gcc  -L../src -L/usr/local/oop/lib  -o srvsearch srvsearch.o parse_options.o stdout_srv_list.o  -lruli -loop
gcc   -O2 -pipe -Wall -g -I../src -I/usr/local/oop/include -c sync_srvsearch.c
gcc  -L../src -L/usr/local/oop/lib  -o sync_srvsearch sync_srvsearch.o parse_options.o stdout_srv_list.o  -lruli -loop
gcc   -O2 -pipe -Wall -g -I../src -I/usr/local/oop/include -c smtpsearch.c
gcc  -L../src -L/usr/local/oop/lib  -o smtpsearch smtpsearch.o parse_options.o stdout_srv_list.o  -lruli -loop
gcc   -O2 -pipe -Wall -g -I../src -I/usr/local/oop/include -c sync_smtpsearch.c
gcc  -L../src -L/usr/local/oop/lib  -o sync_smtpsearch sync_smtpsearch.o parse_options.o stdout_srv_list.o  -lruli -loop
gcc   -O2 -pipe -Wall -g -I../src -I/usr/local/oop/include -c sync_httpsearch.c
gcc  -L../src -L/usr/local/oop/lib  -o sync_httpsearch sync_httpsearch.o parse_options.o stdout_srv_list.o  -lruli -loop
gcc   -O2 -pipe -Wall -g -I../src -I/usr/local/oop/include -c httpsearch.c
gcc  -L../src -L/usr/local/oop/lib  -o httpsearch httpsearch.o parse_options.o stdout_srv_list.o  -lruli -loop
gcc   -O2 -pipe -Wall -g -I../src -I/usr/local/oop/include -c ruli-getaddrinfo.c
ruli-getaddrinfo.c: In function `main':
ruli-getaddrinfo.c:60: warning: `sync_query' might be used uninitialized in this function
gcc   -O2 -pipe -Wall -g -I../src -I/usr/local/oop/include -c addrprint.c
gcc  -L../src -L/usr/local/oop/lib  -o ruli-getaddrinfo ruli-getaddrinfo.o addrprint.o parse_options.o  -lruli -loop
gcc   -O2 -pipe -Wall -g -I../src -I/usr/local/oop/include -c getaddrinfo.c
gcc   -O2 -pipe -Wall -g -I../src -I/usr/local/oop/include -c run_getaddrinfo.c
gcc  -L../src -L/usr/local/oop/lib  -o getaddrinfo getaddrinfo.o run_getaddrinfo.o addrprint.o parse_options.o  -ldl

非常适合任何提示在
libruli中定义的符号。因此
具有
外部“C”
链接

未解析的符号具有
C++
链接(请注意链接器如何列出函数参数类型)

作为正确的猜测,这意味着,在“代码> >库中< /code >下的标题没有正确的<代码> C++ >代码>守护程序。为了解决这个问题,不要这样做(C++代码):

改为这样做:

extern "C" {
#include "libruli.h"
}
或者,修复
libruli.h
本身(并向其开发人员发送补丁):


Ruli头是否适合包含在C++源文件中?<代码>外“C”<代码>和其他内容?
#include "libruli.h"
extern "C" {
#include "libruli.h"
}
#ifdef __cplusplus
extern "C" {
#endif

... original content goes here ...

#ifdef __cplusplus
}
#endif