linux下静态链接, 加了 -static参数, 结果链接时老有如下错误提示, google半天没找到答案, 怎么解决? Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking| gethostbyname这个函数不能静态链接么???
我用log4cplus的库,有静态库(liblog4cplus.a)也有动态库(liblog4cplus.so)
我的环境是:
/home/yrq/test/log4/test$ ls
hello.cpp liblog4cplus.so
/home/yrq/test/log4/test$ ls ..
liblog4cplus.a t2 test
我的代码是:hello.cpp(这个是log4cplus网站上的源代码)
#include
对于glibc,是不推荐静态链接的,但是某些情况下,需要这么做。问题是:静态链接所有库的时候,g++会抛出警告,程序执行的时候,会出错,google了一圈,也问了老大一圈,但是没有一个解释,可能是没人这么干吧。哪位达人帮忙,谢谢 附一个简单的例子,多线程里面调用 getaddrinfo(),静态链接所有库,程序会崩溃,在多个环境下测试: Ubuntu8.04.2 RedHatEnterprise Linux AS release 4 DebianGNU/Linux 3.1 ...
用nm 查看库liblua.a 函数明明就在那里 00000e98 T luaL_loadfile 为什么gcc calllua.c -Lmyluadir -llua仍然出错 /tmp/ccfdyd0o.o(.text+0xf3): In function `main': : undefined reference to `luaL_loadfile' 另外myluadir路径没错,因为去掉-Lmyluadir 则提示找不到lua库
想发布的程序在没有gtk runtime环境的情况下也能运行,在dev-c++ 中怎么样进行静态库的编译? 有什么好办法把要发布的程序打包,让机器不需要安装gtk运行时环境?? [ 本帖最后由 kran 于 2008-10-13 14:01 编辑 ]
大家好, 小弟的问题是这样的: 我试图把在一个程序调用一些函数,这些函数是放在libxxx.a这个静态链接库中,调用的程序又是由多个.c文件组成。由于在多个文件里都要调用这些函数,所以我在每个c文件都放了#include "/lib-path/include/libxxx.h". libxxx.h中的放的是变量的声明(而不是定义): extern variable; 问题出在我试着编译这个程序时,gcc返回variable重复定义的错误,但是如果把这个静态库链接成动态库就没问题,g...
请教,我想编译生成一个.so,但是要静态链接stdc++, 请问我应如何设置gcc或ld的option。 我曾试过用-static, 但是ld报出错误说它与-G不兼容。肯 请高手执教
一顺便说说了哦 通常情况下,对函数库的链接是放在编译时期(compile time)完成的.所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file).程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下。所以这些函数库被成为静态库(static libaray),通常文件名为"libxxx.a"的形式. 其实,我们也可以把对一些库函数的链接载入推迟到程序运行的时期(runtime).这就是如雷贯...
好像搜索没什么信息. 有哪些区别呢?如何生成,使用? 下面是找到的信息: 生成动态链接库: cc –dy –G –o mylib.so filename.c –I/usr/test 还有-shared的,都可以还是有什么区别? 如何使用就不知道了(是没看懂).,不知道对使用这个库的程序有没有要求? 生成静态链接库: ar r ~/lib/libtest.a myfunc1.o myfunc2.o 也不知道如何使用.