INSTALL.devcpp
上传用户:coffee44
上传日期:2018-10-23
资源大小:12304k
文件大小:12k
源码类别:

TAPI编程

开发平台:

Visual C++

  1. DevCpp-Mingw Install & Compilation                                   Sept 2005
  2. ==================================
  3. Reference Emails available at curl@haxx.se: 
  4.   Libcurl Install and Use Issues
  5.   Awaiting an Answer for Win 32 Install 
  6.   res = curl_easy_perform(curl); Error
  7.   Makefile Issues
  8.   
  9. Having previously done a thorough review of what was available that met my
  10. requirements under GPL, I settled for Libcurl as the software of choice for
  11. many reasons not the least of which was the support.
  12. Background
  13. ----------
  14. This quest started when I innocently tried to incorporate the libcurl library
  15. into my simple source code. I figured that a few easy steps would accomplish
  16. this without major headaches. I had no idea that I would be facing an almost
  17. insurmountable challenge.
  18. The main problem lies in two areas. First the bulk of support for libcurl
  19. exists for a Unix/linux command line environments. This is of little help when
  20. it comes to Windows O/S.
  21. Secondly the help that does exist for the Windows O/S focused around mingw
  22. thru a command line argument environment.
  23. You may ask "Why is this a problem?"
  24. I'm using a Windows O/S with DevCpp. For those of you who are unfamiliar with
  25. DevCpp, it is a window shell GUI that replaces the command line environment
  26. for gcc. A definite improvement that I am unwilling to give up. However using
  27. DevCpp presented its own set of issues. Inadvertently I also made some
  28. careless errors such as compiling the 7.14 version of Makefile with an older
  29. version of source code. Thanks to Dan Fandrich for picking this up.
  30. I did eventually with the help of Daniel, Phillipe and others manage to
  31. implement successfully (the only mingw available version)
  32. curl-7.13.0-win32-ssl-devel-mingw32 into the DevCpp environment. Only the
  33. dynamic libcurl.dll libcurldll.a libraries worked. The static library which I
  34. was interested in did not. Furthermore when I tried to implement one of the
  35. examples included with the curl package (get info.c) it caused the executable
  36. to crash. Tracing the bug I found it in the code and function res =
  37. curl_easy_perform(curl);.
  38. At this point I had to make a choice as to whether invest my limited
  39. time-energy resource to fixing the bug or to compile the new version
  40. available. After searching the archives I found a very similar or the same bug
  41. reported from version 7.12x on. Daniel did inform me that he thought that this
  42. bug had been fixed with the latest version. So I proceeded to compile the
  43. latest SSL version where I faced other challenges.
  44. In order to make this process unremarkable for others using the same
  45. environment I decided to document the process so that others will find it
  46. routine. It would be a shame if newbies could not implement this excellent
  47. package for their use.
  48. I would like to thank the many others in this forum and in the DevCpp forum
  49. for their help. Without your help I may either have given up or it would have
  50. taken me many times longer to achieve success.
  51. The Cookbook Approach
  52. ---------------------
  53. This discussion will be confined to a SSL static library compilation and
  54. installation. Limited mention and comments will be inserted where appropriate
  55. to help with non-SSL, dynamic libraries and executables.
  56.    Using Makefile from DevCpp to compile Libcurl libraries
  57. Preamble
  58. --------
  59. Using the latest version release - curl-7.14.0.tar.gz. Curl source code is
  60. platform independent. This simply means that the source code can be compiled
  61. for any Operating System (Linux/Unix Windows etc. and variations of thereof).
  62. The first thing to note is that inside curl-7.14.0 you will find two folders
  63. lib and src. Both contain Makefile.m32 (required for win mingw library or exe
  64. compilation) files which are different. The main difference between these two
  65. folders and the makefiles is that the src folder contents are used to compile
  66. an executable file(curl.exe) while the lib folder contents are used to compile
  67. a static (libcurl.a) and dynamic (libcurl.dll & libcurldll.a) file that can be
  68. used to compile libcurl with your own source code so that one can use and
  69. access all libcurl functions.
  70. Before we start please make sure that DevCpp is installed properly. In
  71. particular make sure you have no spaces in the name of any of the directories
  72. and subdirectories where DevCpp is installed. Failure to comply with the
  73. install instructions may produce erratic behaviour in DevCpp. For further info
  74. check the following sites
  75. http://aditsu.freeunixhost.com/dev-cpp-faq.html
  76. http://sourceforge.net/forum/message.php?msg_id=3252213
  77. As I have mentioned before I will confine this to the SSL Library compilations
  78. but the process is very similar for compilation of the executable - curl.exe;
  79. just substitute the src folder makefile in its stead.
  80. First use a text processor Notepad, or your own favourite text processor. To
  81. engage your favourite text processor, select Makefile.m32 click once with your
  82. mouse on file icon; icon turns blue, press the shift key and right-click on
  83. mouse, menu appears select "Open with", select your favourite text processor.
  84. Next read the contents of Makefile.m32. It includes instructions on its use.
  85. Method I - DOS Command Line
  86. ---------------------------
  87.  
  88. Note - The only reason I have included this method is that Method II which is
  89. the preferred method for compiling does not allow for the setting of option
  90. switches (e.g. SSL = 1 or SSL =0). At least that's what they tell me at the
  91. Dev-Cpp forum.
  92. 1 - Make a copy of (D:Dev-Cppbin) bin folder and name it "bin Original"
  93. place it in the Dev-Cpp installed directory (D:Dev-Cpp for this example)
  94. 2 - Copy the entire contents of the LIB folder of curl-7.14.0.tar.gz or zip
  95. version into the bin folder above (D:Dev-Cppbin). The reason being is that
  96. the make.exe file resides in this folder. Make.exe will use - Makefile.m32,
  97. Makefile.inc, and the source code included in the lib folder to compile the
  98. source code. There is a PATH issue with make.exe that remains unresolved at
  99. least for me. Unless the entire source code to be compiled is placed entirely
  100. within the directory of make.exe an error message will be generated - "file
  101. xxxx.yyy not available".
  102. 3- Go to Dev-Cppbin and double click on make .exe. You will see a DOS window
  103. quickly pop up and close very quickly. Not to worry! Please do not skip this
  104. step.
  105. 4- Click on the start buttonProgramsMS-DOS Prompt.Once the DOS Window is up
  106. Type the disk drive letter (e.g. E: ) engage the enter button. The path should
  107. automatically take you to the directory of the make.exe file.
  108. 5- To compile the source code simply type at the DOS prompt make -f
  109. Makefile.m32 as per instructions contained in the Makefile.m32 file (use any
  110. text processor to read instructions). I don't believe that this makefile
  111. allows for the option of non SSL. Ignore any warnings.
  112. 6- Collect and make copies of libcurl.a, libcurl.dll, libcurldll.a and any *.o
  113. compilations you might need in another directory outside of the bin directory
  114. as you will need this files shortly to set up libcurl for use with
  115. Dev-cpp. For most apps *.o is not required. Later on we will show what to do
  116. with these files.
  117. 7- You are finished but before closing we need to do cleanup - erase the bin
  118. folder and rename the "bin Original" folder created in step 1 to bin.
  119. Note to compile a curl executable the process is probably similar but instead
  120. of using the LIB folder contents use the SRC folder contents and Makefiles in
  121. curl-7.14.0.tar.gz. File directories relative placements must be respected for
  122. compiling to take place successfully. This may not be possible with the PATH
  123. problem that make.exe experiences. If anyone has solved this PATH issue and
  124. please make sure it actually works on Win 9x/2000/XP before letting me
  125. know. Then please let me or Daniel in on the solution so that it can be
  126. included with these instructions. Thanks.
  127. or
  128. Method II - Dev-Cpp GUI
  129. -----------------------
  130. 1- Copy the entire contents of the LIB folder of curl-7.14.0.tar.gz or zip
  131. version into any folder outside of (Dev-Cppbin).
  132. 2- Drop the File/New/click on Project.
  133. 3- New Project Dialogue box appears. Double click on the Static Library.
  134. 4- Create Project Dialogue box appears. Select the LIB folder location to
  135. place and locate your Project File Name. Placing the Project File Name
  136. elsewhere may cause problems (PATH issue problem again).
  137. 5- Drop down the Project/Project Options. Project Options Dialogue box
  138. appears.
  139. 6- Select the Makefile tab in the Project Options Dialogue Box. Check Box -
  140. Use Custom Makefile. Click on the Folder icon at the extreme right of the
  141. Check Box. Select Makefile.m32 in the folder wherever you have placed the
  142. contents of the LIB Folder. Press OK and close the Dialogue Box.
  143. 7- Drop the Menu Project/Click on Add to Project. Open File Dialogue Box
  144. appears.  The Dialogue Box should open in the folder wherever you have placed
  145. the contents of the LIB Folder. If not go there.
  146. 8- Select Crtl-A to select all files in the LIB folder. Click on open to add
  147. files and close box. Wait till all files are added. This may take 30 seconds
  148. or longer.
  149. 9- Drop the Menu Execute/Click on Compile. 
  150. 10- That's it.
  151.    The following steps must be completed if Curl is to work properly
  152.    =================================================================
  153. LIB folder inclusions (*.a placement)
  154. -------------------------------------
  155. 1- Refer to Method I - DOS Command Line point # 6 Take libcurl.a, libcurldll.a
  156. and install it in the directory C( or whichever drive Dev is installed)
  157. :Dev-Cpplib.
  158. Include Folder
  159. --------------
  160. 1- Create a new folder by the name of curl (do not change the name curl to
  161. some other name as it will cause major issues) in the directory
  162. C:Dev-Cppinclude.
  163. 2- Copy the entire contents of the curl folder of curl-7.14.0.tar.gz or zip
  164.  version into the newly created curl directory - C:Dev-Cppincludecurl.
  165. Links To Include And Lib Folder
  166. -------------------------------
  167. 1- Drop the Menu - ToolsCompiler OptionsDirectoriesLibraries. Make sure
  168. that C( or whichever drive Dev is installed):DEV-CPPlib is included.
  169. 2- Next select the Menu - ToolsCompiler OptionsDirectoriesC Includes. Make
  170. sure that C:DEV-CPPinclude and C:Dev-Cppincludecurl are included.
  171. 3- Next select the Menu - ToolsCompiler OptionsDirectoriesC++
  172. Includes. Make sure that C:DEV-CPPinclude and C:Dev-Cppincludecurl are
  173. included.
  174. Linker Links
  175. ------------
  176. 1- Drop the Menu - ToolsCompiler OptionsDirectoriesCompiler.
  177. 2- Make sure that the box "Add these commands to the linker command line" is
  178. checked.
  179. 3- Include in the white space immediately below the box referred in 2 -lcurl
  180. -lws2_32.
  181. SSL Files
  182. ---------
  183. 1- Get the latest openSSL (as of time of this writing)
  184. openssl-0.9.7e-win32-bin.zip for the minimalist package of the openssl-0.9.7e
  185. binaries ported to MS Windows 95/98/NT/XP using the MingW32/GCC-3.1
  186. development environment. The file may be downloaded at
  187. http://curl.haxx.se/download/.
  188. 2- Open the above zip file. You will find two files - SDL.dll,
  189. SDL_mixer.dll. Install them in the directory C:WINDOWSSYSTEM32 for Win 9x
  190. users and c:winntsystem32 for NT-family users.
  191. Multithreading Files
  192. --------------------
  193. To be completed
  194. #define
  195. -------
  196. 1- Make sure that your program includes the following - #define CURL_STATICLIB
  197. must be declared FIRST before any other define functions may be
  198. added. Otherwise you may experience link errors.
  199. 2- Don't forget to include   #include "curl/curl.h".
  200. e.g.
  201.     #define CURL_STATICLIB 
  202. #include <windows.h>
  203.     #include "curl/curl.h"
  204. #include <fstream>
  205. #include <iostream>
  206. #include <vector>
  207. etc...
  208. Static or Dynamic Library
  209. -------------------------
  210. The above steps apply for the use by a static library. Should you choose to
  211. use a dynamic library you will be required to perform these additional steps.
  212. 1- Refer to Method I - DOS Command Line point # 6. Install libcurl.dll in the
  213. directory C:WINDOWSSYSTEM32 for Win 9x users and c:winntsystem32 for
  214. NT-family users.
  215. 2- Refer to Linker Links point 3 - Replace -lcurl with -lcurldll.
  216. Voila you're done.
  217. The non-SSL static Library build may not be possible to use at least as of the
  218. time of this writing - v7.14. Check reference emails - Phillipe and I found it
  219. impossible to fully compile as certain files were missing for linking. No big
  220. loss as SSL is a major plus.
  221. Hope this Helps
  222. Tom