From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31336 invoked by alias); 4 Dec 2008 19:10:58 -0000 Received: (qmail 31324 invoked by uid 22791); 4 Dec 2008 19:10:56 -0000 X-Spam-Check-By: sourceware.org Received: from wa-out-1112.google.com (HELO wa-out-1112.google.com) (209.85.146.183) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 04 Dec 2008 19:10:10 +0000 Received: by wa-out-1112.google.com with SMTP id v33so2237668wah.24 for ; Thu, 04 Dec 2008 11:10:09 -0800 (PST) Received: by 10.114.127.1 with SMTP id z1mr9245543wac.3.1228417809070; Thu, 04 Dec 2008 11:10:09 -0800 (PST) Received: by 10.114.95.7 with HTTP; Thu, 4 Dec 2008 11:10:09 -0800 (PST) Message-ID: <1d9c131c0812041110y462a61a4kc71fa58d3b9e6f42@mail.gmail.com> Date: Thu, 04 Dec 2008 19:10:00 -0000 From: "Kailas Narendran" To: pthreads-win32@sourceware.org Subject: Build Issues with pthreads MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-IsSubscribed: yes Mailing-List: contact pthreads-win32-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: pthreads-win32-owner@sourceware.org X-SW-Source: 2008/txt/msg00067.txt.bz2 Hi, I'm having problems linking pthreads into my application. I'm developing an API for some hardware I've made. If I compile everything and link the pthreads library, everything works: (this works) g++ -D __WIN32__ -Ic:/progra~1/kvaser/canlib/inc -I. -I../Common -I../XitomeMCBAPI ../Common/DynamicSmoothTrajectory.cpp ../XitomeMCBAPI/FunctionGeneratorNode.cpp ../XitomeMCBAPI/XitomeMCBNode.cpp ../XitomeMCBAPI/XitomeMCBNet.cpp ../Common/CommandList.cpp ../Common/CommandNode.cpp ../Common/CANCommon.cpp ../Common/Delay.cpp ../Common/Kbhit.cpp ../Common/ParseCMDLine.cpp ../Common/UtilityTimer.cpp XiHome.cpp ../Common/lib/libpthreadGC2.a ../XitomeMCBAPI/libxitomemcb.a -lcanlib32 -lm -Lc:/progra~1/kvaser/canlib/lib/ms -L. -L..\XitomeMCBAPI -o XiHome this is a bit slow and doesn't lend itself to really making an easy to use API, so i'm trying to compile everything to a library that can be linked into projects using my hardware (and software API). to do this, i compile my sources to objects and link them into a library [1]. When i do so, i get the error: g++ -o XiHome XiHome.o ../Common/lib/libpthreadGC2.a ../XitomeMCBAPI/libxitomemc b.a -lcanlib32 -lm -Lc:/progra~1/kvaser/canlib/lib/ms -L. ../XitomeMCBAPI/libxitomemcb.a(XitomeMCBNet.o):XitomeMCBNet.cpp:(.text+0xae3): u ndefined reference to `pthread_exit' collect2: ld returned 1 exit status make[1]: *** [XiHome] Error 1 This works fine under linux. I've looked around the mailing list archive and saw that others were having similar issues with undefined references and I've tried defining both PTW32_EXTERN as well as PTW32_STATIC_LIB (if i use PTW32_EXTERN the error is _imp__pthread_exit) anyone know what i'm doing wrong? thanks! -kailas 1 - make -C Common all make[1]: Entering directory `C:/xitome/MCB/Software/Common' g++ -D __WIN32__ -D PTW32_STATIC_LIB -Ic:/progra~1/kvaser/canlib/inc -I. -I../Co mmon -I../XitomeMCBAPI -c -o DynamicSmoothTrajectory.o DynamicSmoothTrajectory.c pp g++ -D __WIN32__ -D PTW32_STATIC_LIB -Ic:/progra~1/kvaser/canlib/inc -I. -I../Co mmon -I../XitomeMCBAPI -c -o CommandList.o CommandList.cpp g++ -D __WIN32__ -D PTW32_STATIC_LIB -Ic:/progra~1/kvaser/canlib/inc -I. -I../Co mmon -I../XitomeMCBAPI -c -o CommandNode.o CommandNode.cpp g++ -D __WIN32__ -D PTW32_STATIC_LIB -Ic:/progra~1/kvaser/canlib/inc -I. -I../Co mmon -I../XitomeMCBAPI -c -o CANCommon.o CANCommon.cpp g++ -D __WIN32__ -D PTW32_STATIC_LIB -Ic:/progra~1/kvaser/canlib/inc -I. -I../Co mmon -I../XitomeMCBAPI -c -o Delay.o Delay.cpp g++ -D __WIN32__ -D PTW32_STATIC_LIB -Ic:/progra~1/kvaser/canlib/inc -I. -I../Co mmon -I../XitomeMCBAPI -c -o Kbhit.o Kbhit.cpp g++ -D __WIN32__ -D PTW32_STATIC_LIB -Ic:/progra~1/kvaser/canlib/inc -I. -I../Co mmon -I../XitomeMCBAPI -c -o ParseCMDLine.o ParseCMDLine.cpp g++ -D __WIN32__ -D PTW32_STATIC_LIB -Ic:/progra~1/kvaser/canlib/inc -I. -I../Co mmon -I../XitomeMCBAPI -c -o UtilityTimer.o UtilityTimer.cpp make[1]: Leaving directory `C:/xitome/MCB/Software/Common' make -C XitomeMCBAPI all make[1]: Entering directory `C:/xitome/MCB/Software/XitomeMCBAPI' g++ -D __WIN32__ -D PTW32_STATIC_LIB -Ic:/progra~1/kvaser/canlib/inc -I. -I../Co mmon -I../XitomeMCBAPI -c -o FunctionGeneratorNode.o FunctionGeneratorNode.cpp g++ -D __WIN32__ -D PTW32_STATIC_LIB -Ic:/progra~1/kvaser/canlib/inc -I. -I../Co mmon -I../XitomeMCBAPI -c -o XitomeMCBNode.o XitomeMCBNode.cpp g++ -D __WIN32__ -D PTW32_STATIC_LIB -Ic:/progra~1/kvaser/canlib/inc -I. -I../Co mmon -I../XitomeMCBAPI -c -o XitomeMCBNet.o XitomeMCBNet.cpp ar -cvq libxitomemcb.a FunctionGeneratorNode.o XitomeMCBNode.o XitomeMCBNet.o .. /Common/DynamicSmoothTrajectory.o ../Common/CommandList.o ../Common/CommandNode. o ../Common/CANCommon.o ../Common/Delay.o ../Common/Kbhit.o ../Common/ParseCMDLi ne.o ../Common/UtilityTimer.o a - FunctionGeneratorNode.o a - XitomeMCBNode.o a - XitomeMCBNet.o a - ../Common/DynamicSmoothTrajectory.o a - ../Common/CommandList.o a - ../Common/CommandNode.o a - ../Common/CANCommon.o a - ../Common/Delay.o a - ../Common/Kbhit.o a - ../Common/ParseCMDLine.o a - ../Common/UtilityTimer.o make[1]: Leaving directory `C:/xitome/MCB/Software/XitomeMCBAPI' make -C Utilities all make[1]: Entering directory `C:/xitome/MCB/Software/Utilities' g++ -o XiHome XiHome.o ../Common/lib/libpthreadGC2.a ../XitomeMCBAPI/libxitomemc b.a -lcanlib32 -lm -Lc:/progra~1/kvaser/canlib/lib/ms -L. make[1]: Leaving directory `C:/xitome/MCB/Software/Utilities'