1Objective: how to build MyODBC for Mac OS X and configure for use with iODBC 2 3Introduction 4============ 5 6This readme file describes the steps required to build a MyODBC driver 7on Mac OS X. 8 9Before this driver can be built you need to install the current version of 10MySQL on your system. As building MySQL itself on Mac OS X falls outside 11the context of this readme, we suggest you download a Darwin binary from: 12 13 http://www.mysql.com/downloads/mysql-4.0.htm 14 15As of writing the version of this package is: 16 17 MySQL 4.0.14 18 MacOS X 10.2 (Darwin 6.x) (PowerPC) (7.4M) 19 20 21From the same site you can also download the latest MyODBC sources: 22 23 http://www.mysql.com/downloads/api-myodbc-3.51.html 24 25As of writing the version of this package is: 26 27 MyODBC 3.51.06 28 Source Files (tar.gz) (314K) 29 30 31Unpack this source code into a new directory. 32 33There are who ways to build the MyODBC driver which we will both describe 34in detail below: 35 36 37Method 1 : using the iODBC frameworks 38===================================== 39 401. Install iODBC framework version 41 42 Please read the file ../README.MACOSX for details on how to build 43 and install the framework version of iODBC. 44 45 462. Setting up the MyODBC source tree. 47 48 To setup the MyODBC tree execute the following commands: 49 50 $ cd MyODBC-3.51.06 51 52 53 Then we can either use the supplied myodbc.configure.diff file from 54 the iODBC project using the command: 55 56 $ patch -p1 < myodbc.configure.diff 57 58 or edit the file configure manually and replace every occurrence of 59 60 String Replace with 61 62 -liodbc -framework iODBC 63 -liodbcinst -framework iODBCinst 64 isql.h iODBC/isql.h 65 isqlext.h iODBC/isqlext.h 66 isqltypes.h iODBC/isqltypes.h 67 sql.h iODBC/sql.h 68 sqlext.h iODBC/sqlext.h 69 sqltypes.h iODBC/sqltypes.h 70 iodbcinst.h iODBCinst/iodbcinst.h 71 72 73 After this we configure the source code using the following 74 command: 75 76 ./configure --with-mysql-libs=XXX --with-mysql-includes=YYY 77 78 where XXX and YYY need to be replaced with the correct paths to the 79 MySQL libraries and header files. 80 81 82 Edit the file myodbc3.h and replace every occurrence of: 83 84 String Replace with 85 86 isql.h iODBC/isql.h 87 isqlext.h iODBC/isqlext.h 88 isqltypes.h iODBC/isqltypes.h 89 sql.h iODBC/sql.h 90 sqlext.h iODBC/sqlext.h 91 sqltypes.h iODBC/sqltypes.h 92 iodbcinst.h iODBCinst/iodbcinst.h 93 94 95 Edit the file myconf.h and make sure the following options are defined: 96 97 HAVE_IODBCINST_H 98 HAVE_ISQL_H 99 HAVE_ISQLEXT_H 100 HAVE_SQLGETPRIVATEPROFILESTRING 101 102 If any of these options are not defined, change the line from: 103 104 /* #undef HAVE_ISQL_H */ 105 106 into: 107 108 #define HAVE_ISQL_H 1 109 110 111 Finally, you need to tell to the build process to link the MyODBC driver 112 against the iODBCinst framework. To achieve this goal, just edit the 113 driver/Makefile, make a search on libmyodbc3_la_LIBADD, and append 114 -Wl,-framework,iODBCinst at the end of this line. 115 116 1173. Building the MyODBC driver 118 119 You can now execute the following command to build the driver: 120 121 $ make 122 123 As Mac OS X is only able to load at runtime only bundle libraries, 124 you need to use the following command to build the actual MyODBC 125 driver : 126 127 $ cd driver 128 $ cc -bundle -o libmyodbc.dylib *.lo -framework iODBCinst \ 129 -L/usr/local/mysql/lib/mysql -lmysqlclient -lz 130 131 Use this file libmyodbc.dylib as the driver. 132 133 134 135Method 2 : using the iODBC Unix libraries 136========================================= 137 1381. Install iODBC Unix version 139 140 The iODBC package can also be build as a normal Unix type package 141 using the following commands: 142 143 $ ./configure --prefix=/usr 144 $ make 145 146 followed by installing the library as root using the command: 147 148 # make install 149 150 1512. Setting up the MyODBC source tree. 152 153 To setup the MyODBC tree execute the following commands: 154 155 $ cd MyODBC-3.51.06 156 157 158 After this we can configure the source code using the following 159 command: 160 161 ./configure --with-mysql-libs=XXX --with-mysql-includes=YYY 162 163 where XXX and YYY need to be replaced with the correct paths to the 164 MySQL libraries and header files. 165 166 1673. Building the MyODBC driver 168 169 You can now execute the following command to build the driver: 170 171 $ make 172 173 As Mac OS X is only able to load at runtime only bundle libraries, 174 you need to use the following command to build the actual MyODBC 175 driver : 176 177 $ cc -bundle -o libmyodbc.dylib *.lo -framework iODBCinst \ 178 -L/usr/local/mysql/lib/mysql -lmysqlclient -lz 179 180 Use this file libmyodbc.dylib to configure the driver in the next 181 section. 182 183 184Configuring MyODBC Driver for use with iODBC 185============================================= 186 187To configure the MyODBC for use with iODBC the following actions should 188be performed: 189 1901. From the MyODBC directory run the following command to install driver 191 in '/usr/local/lib' as user root: 192 193 $ cp libmyodbc.dylib /usr/local/lib 194 195 1962. Configure the MyODBC Driver by adding the following lines to 197 /etc/odbcinst.ini: 198 199 [ODBC Drivers] 200 MyODBC Driver = Installed 201 202 [MyODBC Driver] 203 Driver = /usr/local/lib/libmyodbc.dylib 204 205 2063. Configure MyODBC Driver ODBC DSN by adding the following lines to 207 either /etc/odbc.ini or $HOME/.odbc.ini: 208 209 [ODBC Data Sources] 210 MyODBCDSN = MyODBC Driver 211 212 [MyODBCDSN] 213 Driver = /usr/local/lib/libmyodbc.dylib 214 Port = 3306 215 UID = mysql 216 217 *** Please note that the DSN ie MyODBCDSN, must be the name of a 218 valid MySQL Database for the Database Server the connection 219 attempt is being made to. 220 221 2224. A test connection can now be made to the MySQL Database using the 223 following sample program bundled with the iODBC SDK: 224 225 /usr/local/bin/odbctest 226 OpenLink ODBC Demonstration program 227 This program shows an interactive SQL processor 228 229 Enter ODBC connect string (? shows list): ? 230 231 DSN | Driver 232 --------------------------------------------------------------- 233 234 MyODBCDSN | MyODBC Driver 235 236 Enter ODBC connect string (? shows list): 237 238 Use the following string: 239 240 DSN=MyODBCDSN;UID=mysql;PWD=xxxx 241 242 Driver: 02.50.39 243 244 SQL> select * from <table_name> 245 246