微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

链接pthread库的问题

面对一个可能稍微复杂一点的问题,解释和理解,整个画面将是太大和困难。

请原谅。

考虑下面的Makefile:

all: clients.so simulator backup LD_PRELOAD=/home/Juggler/client/clients.so ./simulator backup: backup.c libclient.a gcc backup.c -o backup -L /home/Juggler/client -L. -lclient -ldl simulator: simulator.c libclient.a gcc -g simulator.c -o simulator -L /home/Juggler/client -L. -lclient -ldl -pthread libclient.a: libclient.o client.o ar rcs libclient.a libclient.o client.o libclient.o:libclient.c gcc -c libclient.c -o libclient.o -pthread clients.so: client.o client_invoke.o ld -shared -o clients.so client_invoke.o client.o -ldl client_invoke.o: client_invoke.c gcc -Wall -fPIC -DPIC -c -g client_invoke.c client.o: client.c gcc -Wall -fPIC -DPIC -c -g client.c -ldl -pthread

我们从libclient.c调用client.c编写的函数,client.c中的这些函数调用pthread_key_create(),pthread_setspecific..etc。

我想等待一个文件描述符和一个互斥量,推荐的方法是什么?

C ++ windows二进制文件:与MinGW一起使用的条件

LoadLibrary不重用加载的库

未定义的系统调用如何返回-1?

从64位应用程序使用32位共享库?

线程是由simulator.c创build的,这些线程可以访问写在其他文件中的函数

在做做…像下面的错误出现。

/home/Juggler/client/libclient.a(client.o):In function 'setup_connection': /home/Juggler/client/client.c:35: undefined reference to 'pthread_setspecific'

pthread.h已经包含在client.c和libclient.c中

将感谢任何指针。 我了解的信息是非常less的… … –

谢谢

如何在C / C ++中更改认的exe图标?

如何在c#中缩短path并保持有效

为什么当我的Perl程序在cmd.exe中输出一个UTF-8编码的string时,我得到了最后一个八位字节?

模块隐藏删除/ sys / module / mymodule内容

如何让SuperBible的GLTools库在Ubuntu中工作? 或者一个替代?

在linux上,pthread函数存在于libpthread库中。 所以你必须链接到那个。

使用pthread时,正确的方法是使用-pthread编译和链接,除此之外,它将链接到pthread库中。 你有一些可执行文件的-pthread标志,但是不能用于其他的,而不是你的clients.so文件,所以在需要的地方添加标志。

另外,请记住,在创建共享库时,应该使用-fPIC标志编译源文件

(而且,好像你直接调用ld来生成client.so库,你真的应该用gcc做链接。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐