Page 1 of 1

compiling problem, mingw win32...

Posted: Tue Dec 11, 2007 3:45 pm
by bamf.
I'm trying to compile 2.0.10 with mingw/msys and am having some trouble when I run ./configure, here is the error:

checking for curl-config... /usr/local/bin/curl-config
checking for the version of libcurl... 7.16.4
checking whether libcurl is usable... no
configure: error: libcurl is required. You must install it. See http://curl.haxx.se/

I've downloaded the latest version of curl (that's not it listed above, I've been working backwards from 7.17.1). I don't know a great deal about curl, but it seems that the latest zipped versions are missing some of the files the earlier versions had - the libcurl.dll file for example.

Any help would be appreciated. Thanks.

Posted: Tue Dec 11, 2007 5:51 pm
by JeffM
you need to make sure you get the libcurl dev kit for mingw, not the one for visual C++. I don't see a package for minGW, you may have to compile it yourself under minGW.

minGW is based of GCC and does not use the same files as the Microsoft compiler used in Visual C++

also just so you know, there are free versions of the Microsoft compilers ( visual C++ 2005 and 2008 express editions ).

Posted: Tue Dec 11, 2007 7:14 pm
by bamf.
Thanks Jeff.

Posted: Tue Dec 11, 2007 8:33 pm
by bamf.
ok, got curl compiled for mingw and can run ./configure. When it completes I get:

BZFlag-2.0.10.20071211 with the following:
no curses!
SDL!
bzadmin
bzflag client

The no curses should be ok as I don't need bzadmin. I have the latest directx files (dsound.h, d3dtypes.h and ddraw.h) in the mingw\include directory as well as the latest SDL for mingw from libsdl.org. When I run make I get this towards the end. Any ideas?:

c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:(.text+0x8): undefined reference to `_imp__curl_version'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:(.text+0x2e): undefined reference to `_imp__curl_global_init'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:(.text+0x82): undefined reference to `_imp__curl_multi_init'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager10setTimeoutEl':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:118: undefined reference to `_imp__curl_easy_setopt'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:123: undefined reference to `_imp__curl_easy_setopt'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:127: undefined reference to `_imp__curl_easy_setopt'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:123: undefined reference to `_imp__curl_easy_setopt'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:127: undefined reference to `_imp__curl_easy_setopt'
../common/.libs/libCommon.a(cURLManager.o):c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:138: more undefined references to `_imp__curl_easy_setopt
follow
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager9addHandleEv':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:228: undefined reference to `_imp__curl_multi_add_handle'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager12removeHandleEv':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:239: undefined reference to `_imp__curl_multi_remove_handle'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager5fdsetER6fd_setS1_':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:277: undefined reference to `_imp__curl_multi_fdset'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager12infoCompleteE8CURLcode':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:328: undefined reference to `_imp__curl_formfree'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager11performWaitEv':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:265: undefined reference to `_imp__curl_easy_perform'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager11getFileTimeERl':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:344: undefined reference to `_imp__curl_easy_getinfo'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager11getFileSizeERd':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:356: undefined reference to `_imp__curl_easy_getinfo'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager16setTimeConditionENS_13timeConditionERl':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:370: undefined reference to `_imp__curl_easy_setopt'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:378: undefined reference to `_imp__curl_easy_setopt'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:384: undefined reference to `_imp__curl_easy_setopt'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager11addFormDataEPKcS1_':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:425: undefined reference to `_imp__curl_formadd'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager17setDNSCachingTimeEi':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:438: undefined reference to `_imp__curl_easy_setopt'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager12setUserAgentESs':
c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/basic_string.h:1456: undefined reference to `_imp__curl_easy_setopt'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager12setInterfaceESs':
c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/basic_string.h:1456: undefined reference to `_imp__curl_easy_setopt'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager11setPostModeESs':
c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/basic_string.h:1456: undefined reference to `_imp__curl_easy_setopt'
c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/basic_string.h:536: undefined reference to `_imp__curl_easy_setopt'
../common/.libs/libCommon.a(cURLManager.o):c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:167: more undefined references to `_imp__curl_easy_setopt' follow
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManagerD0Ev':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:86: undefined reference to `_imp__curl_easy_cleanup'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManagerD1Ev':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:86: undefined reference to `_imp__curl_easy_cleanup'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManagerD2Ev':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:86: undefined reference to `_imp__curl_easy_cleanup'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManager7performEv':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:293: undefined reference to `_imp__curl_multi_perform'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:306: undefined reference to `_imp__curl_multi_info_read'
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManagerC1Ev':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:41: undefined reference to `_imp__curl_easy_init'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:54: undefined reference to `_imp__curl_easy_setopt'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:59: undefined reference to `_imp__curl_easy_setopt'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:64: undefined reference to `_imp__curl_easy_setopt'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:69: undefined reference to `_imp__curl_easy_setopt'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:74: undefined reference to `_imp__curl_easy_setopt'
../common/.libs/libCommon.a(cURLManager.o):c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:48: more undefined references to `_imp__curl_easy_setopt' follow
../common/.libs/libCommon.a(cURLManager.o): In function `ZN11cURLManagerC2Ev':
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:41: undefined reference to `_imp__curl_easy_init'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:54: undefined reference to `_imp__curl_easy_setopt'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:59: undefined reference to `_imp__curl_easy_setopt'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:64: undefined reference to `_imp__curl_easy_setopt'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:69: undefined reference to `_imp__curl_easy_setopt'
c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:74: undefined reference to `_imp__curl_easy_setopt'
../common/.libs/libCommon.a(cURLManager.o):c:/msys/1.0/bzflag-2.0.10rc3/src/common/cURLManager.cxx:48: more undefined references to `_imp__curl_easy_setopt' follow
../c-ares/.libs/libcares.a(ares_process.o): In function `ares__send_query':
c:/msys/1.0/bzflag-2.0.10rc3/src/c-ares/ares_process.c:509: undefined reference to `connect@12'
c:/msys/1.0/bzflag-2.0.10rc3/src/c-ares/ares_process.c:538: undefined reference to `connect@12'
collect2: ld returned 1 exit status
make[2]: *** [bzfs.exe] Error 1
make[2]: Leaving directory `/c/msys/1.0/bzflag-2.0.10rc3/src/bzfs'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/c/msys/1.0/bzflag-2.0.10rc3/src'
make: *** [install-recursive] Error 1

Posted: Tue Dec 11, 2007 10:53 pm
by macsforme
It looks like the compiler cannot find the libcurl headers. I would think that configure should've caught that, but I'm not familiar with mingw.

As a guess, maybe copy the libcurl headers into mingw\include?

Also, if you don't need bzadmin, best to disable it with --disable-bzadmin... will save you some space, and make you compile time a bit quicker.

Posted: Tue Dec 11, 2007 11:40 pm
by DTRemenak
ld is the linker, not the compiler. It finds the headers fine, but can't find the symbols in the library. Make sure you did a "make install" when building libcurl (or otherwise copied the .lib file to the appropriate place).

Posted: Wed Dec 12, 2007 2:07 pm
by bamf.
I did run "./configure, make and make install" on curl, these all ran with no errors.
I also tried compiling curl with a prior version of curl (no errors) but received the same error when compiling bzflag.
I searched the directory structure for a .lib file and found nothing. I did copy a few files to different locations (libcurl.a, libcurl.la, libcurl.dll.a, libcurl-4.dll, curl.h, curl-config, libcurl.pc, curlver.h, curl.exe).

This is what I get right before the error I posted above:

if g++ -DHAVE_CONFIG_H -I. -I. -I../../include -I../../include -I/usr/local/include -DINSTALL_DATA_DIR=\"/usr/local/share/bzflag\" -DINSIDE_BZ -fsigned-char -Wno-deprecated -g -O2 -Wall -W -mtune=i686 -ffast-math -fno-exceptions -MT bzfs.o -MD -MP -MF ".deps/bzfs.Tpo" \
-c -o bzfs.o `test -f 'bzfs.cxx' || echo './'`bzfs.cxx; \
then mv ".deps/bzfs.Tpo" ".deps/bzfs.Po"; \
else rm -f ".deps/bzfs.Tpo"; exit 1; \
fi
/bin/sh ../../libtool --mode=link g++ -fsigned-char -Wno-deprecated -g -O2 -Wall -W -mtune=i686 -ffast-math -fno-exceptions -o bzfs.exe -export-dynamic -static AccessControlList.o Authentication.o BanCommands.o bzfsAPI.o BZWError.o BZWReader.o CmdLineOptions.o CustomArc.o CustomBase.o CustomBox.o CustomCone.o CustomDynamicColor.o CustomGate.o CustomGroup.o CustomLink.o CustomMaterial.o CustomMesh.o CustomMeshFace.o CustomMeshTransform.o CustomPhysicsDriver.o CustomSphere.o CustomTextureMatrix.o CustomPyramid.o CustomTetra.o CustomWaterLevel.o CustomWeapon.o CustomWorld.o CustomZone.o DropGeometry.o EntryZones.o Filter.o FlagHistory.o FlagInfo.o GameKeeper.o ListServerConnection.o MasterBanList.o ParseMaterial.o Permissions.o RandomSpawnPolicy.o RecordReplay.o RejoinList.o Score.o ServerCommand.o SpawnPolicy.o SpawnPosition.o TeamBases.o WorldFileLocation.o WorldFileObject.o WorldFileObstacle.o WorldGenerators.o WorldInfo.o WorldWeapons.o WorldEventManager.o commands.o bzfs.o ../obstacle/libObstacle.la ../game/libGame.la ../net/libNet.la ../common/libCommon.la -L/usr/local/lib -lcurl -lwinmm -lws2_32 -lws2_32 ../c-ares/libcares.la ../regex/libregex.la ../zlib/libz.la ../date/libDate.la -lm
g++ -fsigned-char -Wno-deprecated -g -O2 -Wall -W -mtune=i686 -ffast-math -fno-exceptions -o bzfs.exe AccessControlList.o Authentication.o BanCommands.o bzfsAPI.o BZWError.o BZWReader.o CmdLineOptions.o CustomArc.o CustomBase.o CustomBox.o CustomCone.o CustomDynamicColor.o CustomGate.o CustomGroup.o CustomLink.o CustomMaterial.o CustomMesh.o CustomMeshFace.o CustomMeshTransform.o CustomPhysicsDriver.o CustomSphere.o CustomTextureMatrix.o CustomPyramid.o CustomTetra.o CustomWaterLevel.o CustomWeapon.o CustomWorld.o CustomZone.o DropGeometry.o EntryZones.o Filter.o FlagHistory.o FlagInfo.o GameKeeper.o ListServerConnection.o MasterBanList.o ParseMaterial.o Permissions.o RandomSpawnPolicy.o RecordReplay.o RejoinList.o Score.o ServerCommand.o SpawnPolicy.o SpawnPosition.o TeamBases.o WorldFileLocation.o WorldFileObject.o WorldFileObstacle.o WorldGenerators.o WorldInfo.o WorldWeapons.o WorldEventManager.o commands.o bzfs.o ../obstacle/.libs/libObstacle.a ../game/.libs/libGame.a ../net/.libs/libNet.a ../common/.libs/libCommon.a -L/usr/local/lib /usr/local/lib/libcurl.a -lwinmm -lws2_32 ../c-ares/.libs/libcares.a ../regex/.libs/libregex.a ../zlib/.libs/libz.a ../date/.libs/libDate.a -lm
../common/.libs/libCommon.a(cURLManager.o): In function `ZNSt8_Rb_treeIPvSt4pairIKS0_P11cURLManagerESt10_Select1stIS5_ESt4lessIS0_ESaIS5_EE11lower_boundERS2_':

Posted: Wed Dec 12, 2007 4:54 pm
by JeffM
it still looks like it can't find the link library.