Linux下编译出现undefined reference to ‘pthread_create’问题解决
1.代码
/*
* File: HeartPackageSendAgent.cpp
* Author: Pangxiaojian
*
*
* 主要实现:向服务器发送心跳包,每5s向服务器发送一个心跳包
* File: HeatPackageAgent.c
* Author: Pangxiaojian
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <net/if.h>
#include <sys/ioctl.h> #include <pthread.h>
#include <unistd.h>
#define MAXLINE 80
#define SERV_PORT 8000 const int HeatPort = ; //??
const char ServerIP[] = "192.168.18.128"; void getIPHost(char** iphost)
{
/*
int sock;
struct sockaddr_in sin;
struct ifreq ifr; sock = socket(AF_INET,SOCK_DGRAM,0);
int i;
int j;
for(i = 0; i<10;i++)
{
char* ENAME = (char*)malloc(5*sizeof(char));
bzero(ENAME,5);//
sprintf(ENAME,"%s%d",ETH_NAME,i);
strncpy(ifr.ifr_name,ENAME,IFNAMSIZ);
free(ENAME);
ifr.ifr_name[IFNAMSIZ - 1] = 0; if(ioctl(sock,SIOCGIFADDR,&ifr) >= 0)
goto HERE; } for(j = 0; j < 10; j++)
{
char* WNAME = (char*)malloc(6*sizeof(char));
bzero(WNAME, 6);
sprintf(WNAME, "%s%d", WTH_NAME, j);
strncpy(ifr.ifr_name, WNAME, IFNAMSIZ);
free(WNAME);
ifr.ifr_name[IFNAMSIZ - 1] = 0; if (ioctl(sock, SIOCGIFADDR, &ifr) >= 0)
goto HERE;
} */ int inet_sock;
struct sockaddr_in sin;
struct ifreq ifr;
inet_sock = socket(AF_INET,SOCK_DGRAM,);
strcpy(ifr.ifr_name,"eth0");
if(ioctl(inet_sock,SIOCGIFADDR,&ifr)>=)
{
perror("ioctl");
printf("%s\n",inet_ntoa(((struct sockaddr_in*)&(ifr.ifr_addr))->sin_addr));
goto HERE;
} HERE:
memcpy(&sin,&ifr.ifr_addr,sizeof(sin));
char* hostname = (char*)malloc(*sizeof(char));
bzero(hostname, );
gethostname(hostname, *sizeof(char));
char* ip = inet_ntoa(sin.sin_addr);
int lenhost = strlen(hostname);
int lenip = strlen(ip);
*iphost = (char*)malloc((lenhost+lenip+)*sizeof(char));
bzero(*iphost, (lenhost+lenip+)*sizeof(char));
sprintf(*iphost, "%s:%s", ip, hostname);
free(hostname); } int heart_send()
{
char send_buf[MAXLINE];
char recv_buf[MAXLINE];
char *iphost = NULL;
int sockfd = socket(AF_INET, SOCK_DGRAM, ); struct sockaddr_in cliaddr;//host
cliaddr.sin_family = AF_INET;
cliaddr.sin_addr.s_addr = inet_addr(ServerIP);//host ip
cliaddr.sin_port = htons(SERV_PORT); bind(sockfd, (struct sockaddr *)&cliaddr, sizeof(cliaddr)); getIPHost(&iphost); memcpy(send_buf,iphost,strlen(iphost));//heart packet while ()
{
struct sockaddr_in servaddr;
socklen_t servaddr_len = sizeof(servaddr); int count = recvfrom(sockfd, recv_buf, MAXLINE, , (struct sockaddr *)&servaddr, &servaddr_len); if (count < )
{
printf("recvfrom error");
continue;
}
printf("received msg is %s\n",recv_buf);
sendto(sockfd, send_buf, sizeof(send_buf), , (struct sockaddr *)&servaddr, sizeof(servaddr));
sleep(); }
close(sockfd);
//return ((void*)l); } int main()
{
pthread_t m_threadHeartSend;
int *ret_join = NULL;
if (pthread_create(&m_threadHeartSend, NULL, &heart_send, NULL) != )
return -;
pthread_join(m_threadHeartSend,(void*)&ret_join); }
2.编译命令为 gcc main.c -o test时,会出现如下错误
|
/tmp/ccCuKQ9a.o: In function `main': |
3.原因和解决方法
|
问题的原因:pthread不是linux下的默认的库,也就是在链接的时候,无法找到phread库中哥函数的入口地址,于是链接会失败。 解决:在gcc编译的时候,附加要加 -lpthread参数即可解决。 试用如下命令即可编译通过
|
4.参考链接
| https://www.cnblogs.com/langzou/p/7364014.html |
Linux下编译出现undefined reference to ‘pthread_create’问题解决的更多相关文章
- Linux 下编译出现 undefined reference to `pthread_create'
这是由于没有链接线程库的原因,只要在编译的时候加入: -lpthread 参数即可. arm-linux-gcc serial.c -o serial -lpthread 查看 ubuntu 版本的命 ...
- Linux下undefined reference to ‘pthread_create’问题解决
Linux下undefined reference to 'pthread_create'问题解决 在试用Linux 线程模块时,试用pthread_create 函数. 编译命令为 gcc main ...
- [转载]解决linux 下多线程错误 undefined reference to `sem_init'
转自:https://blog.csdn.net/yzycqu/article/details/7396498?utm_source=copy 解决linux 下多线程错误 undefined ref ...
- Linux下undefined reference to ‘pthread_create’问题解决 zz
接触了Linux系统编程中的线程编程模块,可gcc sample.c(习惯把书上的sample代码写进sample.c文件中)出现“undefined reference to ‘pthread_cr ...
- Linux+CLion+树莓派远程编译时,Cmake编译出现undefined reference to 'pthread_create'的解决办法
在CLion中开发讯飞的linux语音库时编译出现以下问题: undefined reference to 'pthread_create' CLion的cmake配置:修改CMakeLists.tx ...
- undefined reference to `pthread_create'问题解决
在编译pthread有关的程序时,出现undefined reference to `pthread_create'这样的错误. 问题原因: pthread 库不是 Linux 系统默认的库,连接时需 ...
- undefined reference to 'pthread_create'问题解决 -- 转
文章出处:http://blog.csdn.net/llqkk/article/details/2854558 由于是Linux新手,所以现在才开始接触线程编程,照着GUN/Linux编程指南中的一个 ...
- undefined reference to 'pthread_create'问题解决(转载)
转自:http://blog.csdn.net/llqkk/article/details/2854558 由于是Linux新手,所以现在才开始接触线程编程,照着GUN/Linux编程指南中的一个例子 ...
- [Linux] Linux下undefined reference to ‘pthread_create’问题解决
问题的原因:pthread不是Linux下的默认的库,也就是在链接的时候,无法找到phread库中函数的入口地址,于是链接会失败. 解决:在gcc编译的时候,附加要加 -lpthread参数即可解决.
随机推荐
- CSS3嵌入字体
@font-face能够加载服务器端的字体文件,让浏览器端可以显示用户电脑里没有安装的字体.语法: 例子:
- asyncio标准库2 Hello Clock
如何调度协程,并发运行 asyncio.gather方法可以聚合协程or future def gather(*coros_or_futures, loop=None, return_exceptio ...
- ASP.NET向MySQL写入中文的乱码问题-.NET技术/C#
1,在 mysql数据库安装目录下找到my.ini文件,把default-character-set的值修改为 default-character-set=gb2312(修改两处),保存,重新启动. ...
- 1.LVS理论基础
查看我的有道云笔记: http://note.youdao.com/noteshare?id=68e0ca45757943e482ba390d4d49369f&sub=4A2A593CDE2D ...
- March 4 2017 Week 10 Saturday
There is more to life than increasing its speed. 生活不仅仅是匆匆赶路. I always think I have walked very slowl ...
- React总结和遇到的坑
一.react项目 前端react后端node:https://github.com/GainLoss/react-juejin 前端react后端Pyton:https://github.com/G ...
- 如何清理Windows缩略图缓存?
从Win95的IE4开始就有缩略图缓存了,缩略图缓存作用主要是用于存储Windows资源管理器缩略图图像文件.这加快了图像的显示速度,因为每次用户查看文件夹时都不需要重新生成这些较小的图像.缩略图缓存 ...
- Java传引用问题
Java传引用问题 使用Java调用方法时,可以传值,也可以传引用.下面说说两者的区别: 1.传值 传值中的"值"类型是指java的8大基本类型(基础知识,不知道 ...
- Uva 10061 进制问题
题目大意:让求n!在base进制下的位数以及末尾0的连续个数. 多少位 log_{10}256=log_{10}210^2+log_{10}510^1+log_{10}6*10^0 可以发现,只和最高 ...
- Python的基本库与第三方库
一:Python 模块,包,库的概念理解: 1.python模块是: python模块:包含并且有组织的代码片段为模块. 表现形式为:写的代码保存为文件.这个文件就是一个模块.sample.py 其中 ...