【发布时间】:2013-02-14 10:50:11
【问题描述】:
我正在尝试编译一个库,liblo。我正在安装它,因为它是我尝试安装的另一个库 osc-mex 的必需库。为了让 liblo 在 Windows 上与 osc-mex 一起工作,我需要使用“pthreads commented out”编译 liblo。
据我所知,pthread 是 Unix 使用的协议?无论如何,我需要删除 liblo 代码中对 pthread 的提及。但是我遇到了一个问题;代码中有多个区域提到了“pthread”。在 liblo 目录的(未编译的)源代码中搜索文本“pthreads”会在 8 个文件中产生 25 个结果:
Filename Line # Line text
*********************************************************************************
ChangeLog 165 * Fixed pthread resource leak, when stopping thread
NEWS 153 * Fixed pthread resource leak, when stopping server
config.h.in 18 /* Define to 1 if you have the `pthread' library (-lpthread). */
config.h.in 19 #undef HAVE_LIBPTHREAD
configure 11000 { echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5
configure 11001 echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6; }
configure 11002 if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then
configure 11006 LIBS="-lpthread $LIBS"
configure 11020 char pthread_create ();
configure 11024 return pthread_create ();
configure 11047 ac_cv_lib_pthread_pthread_create=yes
configure 11052 ac_cv_lib_pthread_pthread_create=no
configure 11059 { echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5
configure 11060 echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6; }
configure 11061 if test $ac_cv_lib_pthread_pthread_create = yes; then
configure 11063 #define HAVE_LIBPTHREAD 1
configure 11066 LIBS="-lpthread $LIBS"
configure.ac43 AC_CHECK_LIB([pthread], [pthread_create])
liblo.pc.in 9 Libs: -L${libdir} -llo -lpthread
libtool 4511 # Do not include libc_r directly, use -pthread flag.
libtool 4536 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
libtool 5030 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
ltmain.sh 4027 # Do not include libc_r directly, use -pthread flag.
ltmain.sh 4052 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
ltmain.sh 4546 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
显然,上面的一些行已经是 cmets,但这里也有一些行可以通过多种不同的方式进行修改以达到相同的目的。 “注释掉 pthreads”的指令是我不完全理解或不知道如何实现的。任何建议将不胜感激。
【问题讨论】:
-
我假设您也在 Windows 上使用配置脚本;如果是这样,
./configure --help是否会为您提供禁用 pthread 使用的选项? -
有一个与 Windows 兼容的 pthreads 版本。如果你已经安装了,那么你不需要重新配置 liblo 来不使用它。
-
@Neil 你能提供一个指向那个版本的 pthreads 的指针吗?
-
Pthreads for Windows:sourceware.org/pthreads-win32