从上面的输出可以看到,目前gcc 4.5.2中已经没有了关于 -lpthread的介绍了。所以以后的多线程编译应该用 -pthread,而不是-lpthread。 仔细的阅读man gcc中的关于pthread的介绍: -pthread Adds support for multithreading with the pthreads library. This option sets flags for both the preprocessor and linker...
gcc x.o -ox -lpthread 而gcc手册里则指出应该在编译和链接时都增加 -pthread 选项,像这样: gcc -pthread -c x.c gcc x.o -ox -pthread 那么-pthread 相比于 -lpthread 链接选项究竟多做了什么工作呢?我们可以在verbose模式下执行一下对应的gcc命令行看出来。下面是老式的直接加 -lpthread 链接选项的输出...
digdeep@ubuntu:~/pthread/learnthread$ gcc-Wall-lpthread-o atfork atfork.c/tmp/cckSrItT.o:Infunction`main': atfork.c:(.text+0x195):undefined reference to `pthread_atfork' collect2:ld returned 1exitstatus digdeep@ubuntu:~/pthread/learnthread$ gcc-Wall-pthread-o atfork atfork.c digdeep@ubunt...
2、-pthread可移植性较强:在Linux中,pthread是作为一个单独的库存在的(libpthread.so),但是在其他Unix变种中却不一定,比如在FreeBSD中是没有单独的pthread库的,因此在FreeBSD中不能使用-lpthread来链接pthread,而使用-pthread则不会存在这个问题,因为FreeBSD的编译器能正确将-pthread展开为该系统下的依赖参数。同样...
-pthread展开为“-D_REENTRANT -lpthread”,不仅能链接pthread库,还能打开系统头文件中的各种多线程支持分支,如errno错误码标志。定义_REENTRANT可实现每线程独有errno,避免线程竞争错误。-pthread在移植性方面更为强大,尤其在不同Unix变种中,如FreeBSD,不会遇到链接问题。尽管-pthread未被接纳为C标准...
gcc x.o -ox -pthread 那么-pthread 相比于 -lpthread 链接选项究竟多做了什么工作呢?我们可以在verbose模式下执行一下对应的gcc命令行看出来。下面是老式的直接加 -lpthread 链接选项的输出结果: $ gcc -v -c x.c ... /usr/lib/gcc/i486-linux-gnu/4.2.4/cc1 -quiet -v x.c -quiet -dumpbase x...
从上面的输出可以看到,目前gcc 4.5.2中已经没有了关于 -lpthread的介绍了。所以以后的多线程编译应该用 -pthread,而不是-lpthread。 仔细的阅读man gcc中的关于pthread的介绍: -pthread Adds support for multithreading with the pthreads library. This option sets flags for both the preprocessor and link...
-pthread 比 -lpthread 多了一个宏定义 -D_REENTRANT 对于多线程程序来说这个宏非常重要,这个宏会让libc和一些其他库,自动选择线程安全的函数实现(很多函数有线程安全和不安全的2种实现版本)所以建议使用-pthread 或者加上 -D_REENTRANT.
在Eclipse中使用gcc的-lpthread和-lrt进行编译,是为了链接特定的库文件,以便在程序中使用相应的功能。 -lpthread:这是一个链接选项,用于链接POSIX线程库(libpthread)。POSIX线程库提供了线程创建、同步和通信等功能,是多线程编程的基础。在Eclipse中,可以通过以下方式添加该选项:...
-lpthread是链接库,<pthread.h>只有申明,实现部分都在库里面。创建线程时一般是把函数的指针做参数,所以要加一个取地址符号。ret=pthread_create(&id,NULL,(void *)&thread,NULL);另外,建议要检查一下创建线程的返回值ret是否成功,防止影响后面的代码。