- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于我可以进一步检查为什么找不到符号的任何想法,非常感谢。是的,找到了 so lib,路径是在/etc/ld.so.conf 中设置的(http://www.nongnu.org/ruli/)
g++ --版本g++ (GCC) 3.3.3 (SuSE Linux)
g++ -D_xx_ -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”////
./se/yy/xx/business/ss/communication/ServerSocketThread.o ./se/yy/xx/business/ss/communication/SocketThread.o ./se/yy/xx/business/ss/communication/ThreadBase.o -lpthread -lxml2 -lruli -loop -lasn1per -lasn1rt -lmysqlpp
./se/yy/xx/business/ss/communication/ClientSocketThread.o(.text+0xc17): In function `ClientSocketThread::Connect(char const*, char const*, int)':
../se/yy/xx/business/ss/communication/ClientSocketThread.cpp:152: undefined reference to `ruli_sync_query(char const*, char const*, int, long)'
./se/yy/xx/business/ss/communication/ClientSocketThread.o(.text+0xdb1):../se/yy/xx/business/ss/communication/ClientSocketThread.cpp:161: undefined reference to `ruli_sync_srv_code(ruli_sync_t const*)'
./se/yy/xx/business/ss/communication/ClientSocketThread.o(.text+0xf55):../se/yy/xx/business/ss/communication/ClientSocketThread.cpp:173: undefined reference to `ruli_sync_rcode(ruli_sync_t*)'
./se/yy/xx/business/ss/communication/ClientSocketThread.o(.text+0x1123):../se/yy/xx/business/ss/communication/ClientSocketThread.cpp:185: undefined reference to `ruli_sync_srv_list(ruli_sync_t*)'
./se/yy/xx/business/ss/communication/ClientSocketThread.o(.text+0x113a):../se/yy/xx/business/ss/communication/ClientSocketThread.cpp:186: undefined reference to `ruli_list_size(ruli_list_t const*)'
./se/yy/xx/business/ss/communication/ClientSocketThread.o(.text+0x14ad):../se/yy/xx/business/ss/communication/ClientSocketThread.cpp:204: undefined reference to `ruli_list_get(ruli_list_t const*, int)'
./se/yy/xx/business/ss/communication/ClientSocketThread.o(.text+0x14d5):../se/yy/xx/business/ss/communication/ClientSocketThread.cpp:206: undefined reference to `ruli_list_size(ruli_list_t const*)'
./se/yy/xx/business/ss/communication/ClientSocketThread.o(.text+0x150b):../se/yy/xx/business/ss/communication/ClientSocketThread.cpp:213: undefined reference to `ruli_dname_decode(char*, int, int*, char const*, int)'
./se/yy/xx/business/ss/communication/ClientSocketThread.o(.text+0x1753):../se/yy/xx/business/ss/communication/ClientSocketThread.cpp:225: undefined reference to `ruli_list_get(ruli_list_t const*, int)'
./se/yy/xx/business/ss/communication/ClientSocketThread.o(.text+0x176a):../se/yy/xx/business/ss/communication/ClientSocketThread.cpp:226: undefined reference to `ruli_addr_family(ruli_addr_t const*)'
./se/yy/xx/business/ss/communication/ClientSocketThread.o(.text+0x17a7):../se/yy/xx/business/ss/communication/ClientSocketThread.cpp:229: undefined reference to `ruli_in_snprint(char*, unsigned, _ruli_addr const*, int)'
collect2: ld returned 1 exit status
make: *** [SlisServer] Error 1
sudo ldd /usr/local/lib/libruli.so
linux-gate.so.1 => (0xffffe000)
liboop.so.4 => /usr/local/lib/liboop.so.4 (0x40025000)
libdl.so.2 => /lib/libdl.so.2 (0x4002c000)
libc.so.6 => /lib/tls/libc.so.6 (0x40030000)
/lib/ld-linux.so.2 (0x80000000)
据我所知,lib 中的所有符号看起来都不错
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
Har testat att läggatil en av funktionsanropen (剪切/粘贴 samma kod) i en av test funktionerna i ruli lib och det länkar utan Problem mot samma 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.so
中定义的符号具有 extern "C"
链接。
您未解析的符号具有 C++
链接(请注意链接器如何列出函数参数类型)。
正如 chill 正确猜测的那样,这意味着 libruli
附带的 header 没有适当的 C++
防护。要解决此问题,请不要执行此操作(在 C++ 代码中):
#include "libruli.h"
这样做:
extern "C" {
#include "libruli.h"
}
或者,修复 libruli.h
本身(并向其开发人员发送补丁):
#ifdef __cplusplus
extern "C" {
#endif
... original content goes here ...
#ifdef __cplusplus
}
#endif
关于linker - 未找到链接 libruli.so 的 g++ 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13509985/
我目前正在尝试让 g++ 工作,并查看 http://gcc.gnu.org/install/build.html ,我似乎找不到它在哪里说如何“执行编译器的 3 阶段 bootstrap ”。我在哪
James Powell 在他对即将举行的演示文稿的简短描述中说,他自豪地发明了最粗糙的 Python 单行代码之一: (None for g in g if (yield from g) and F
请告诉我我的证明是否正确 We have a connected graph, and specific vertex u in V(G). Suppose we compute the dfs tr
下面的test2和test3结果是不同的。 我对此感到困惑,因为它看起来像相同的逻辑,并且与linux bash ||逻辑不同。 $data = @( [PSCustomObject]@{St
我试图找到一个明确的 G 代码语法规范,而不是单个 G 代码的含义,我无处不在的规范,我的意思是详细的语法规范,目的是编写解析器。 我编写解析器没有问题,我只是在寻找语法规范,例如。我知道您不必总是为
我写了这个 mixin,但它循环了很多时间。你能帮我优化我的代码吗?或者你能建议一些其他的东西来获得想要的结果吗? dfgdfgsdfgsdf 最佳答案 希望这就是您要找的。 $spaces: (4,
默认情况下,g++ 似乎会省略未使用的类内定义方法的代码。示例 from my previous question : struct Foo { void bar() {} void baz(
是否可以将文件内容通过管道传送到 g++编译程序? 我想这样做是因为我想使用数据库中的文件而不是磁盘上的物理文件。可以通过我制作的 API 轻松检索文件内容。 例如,我想做这样的事情: g++ con
如何profile c++代码获取每行代码的调用次数和消耗时间,就像profile工具一样在 Matlab 中呢? 我尝试使用-fprofile-arcs之类的东西,但它只生成代码覆盖率报告,其中可以
如何在几行代码上禁用所有警告。可以使用 GCC 诊断功能禁用特定警告,但是否有针对所有警告的标志。我尝试了这个方法,但不起作用 #pragma GCC diagnostic push #pragma
我有一个链接到 opencv 2.2 的可执行文件。但是,我删除了 opencv 2.2 并安装了 opencv 2.3。 问题是,有没有办法在不重新编译整个源代码的情况下将这个可执行文件链接到新的共
在编译带有一些标志的以下文件时,是否可以让 g++ 显示错误? #include using namespace std; int main() { int arr[ 2 ]; cout
在学习 Haskell 时,我遇到了一个挑战,要找到两个函数 f 和 g,例如 f g 和 f 。 g 是等价的(并且是总计,因此像 f = undefined 或 f = (.) f 这样的东西不算
根据我的理解,Theta 位于 Big O 和 Omega 之间,但我看到了这个声明,但我无法理解为什么交集会出现在这里。我能否对 Θ(g(n)) = O(g(n)) ∩ Ω(g(n)) 获得数学和分
我需要为这个递归函数编写一个迭代函数。 int funcRec(int n){ if(n>1) { return 2*funcRec(n - 1) + 3*funcRec(n
我在 github repository 上有代码示例并在 travis-ci 上创建了一个构建便于复制。 最小的、完整的和可验证的例子 可能不是最小的,但我相信它足够小 它使用 boost.inte
编辑:我们将调用箭头 p纯如果存在这样的函数f即:p = arr f . 我试图更好地掌握 Haskell 中的 Arrows,我想弄清楚什么时候 f >>> (g &&& h) = (f >>> g
我有两个(或更多)函数定义为: val functionM: String => Option[Int] = s => Some(s.length) val functionM2: Int => Op
好像是的。任何直观或严肃的证据都值得赞赏。 最佳答案 没有。 我认为您的问题等同于:给定函数 f 和 g,f 是 O(g) 或 g 是 O(f) 是否总是正确的?这在 SE Computer Scie
如果我设法证明 f(n) = o(g(n))(小 o),那么这两个函数的总和 f( n) + g(n) 应该被“更大”的函数 g(n) 紧紧束缚。 然而,我在证明这一点时遇到了一些麻烦。 最佳答案 以
我是一名优秀的程序员,十分优秀!