pragma under linux

John Reimer terminal.node at gmail.com
Wed Dec 13 00:10:47 PST 2006


On Tue, 12 Dec 2006 06:47:27 -0800, %u <not at possible.com> wrote:

> Hello,
>
> i try to compile mysql programm with pragma under linux.
>
> pragma(lib,"libmysqlclient.so");
>
> But i get an error message:
>
> dmd mysql_pragma.d mysql.d
> gcc mysql_pragma.o mysql.o -o mysql_pragma -m32 -lphobos -lpthread -lm
> mysql_pragma.o: In function `_Dmain':
> mysql_pragma.d:(.gnu.linkonce.t_Dmain+0x15): undefined reference to  
> `mysql_init'
> mysql_pragma.d:(.gnu.linkonce.t_Dmain+0x3f): undefined reference to
> `mysql_real_connect'
> mysql_pragma.d:(.gnu.linkonce.t_Dmain+0x73): undefined reference to  
> `mysql_query'
> mysql_pragma.d:(.gnu.linkonce.t_Dmain+0x7b): undefined reference to
> `mysql_store_result'
> mysql_pragma.d:(.gnu.linkonce.t_Dmain+0x84): undefined reference to
> `mysql_num_rows'
> mysql_pragma.d:(.gnu.linkonce.t_Dmain+0x9c): undefined reference to
> `mysql_fetch_row'
> mysql_pragma.d:(.gnu.linkonce.t_Dmain+0x141): undefined reference to  
> `mysql_query'
> mysql_pragma.d:(.gnu.linkonce.t_Dmain+0x14f): undefined reference to  
> `mysql_query'
> mysql_pragma.d:(.gnu.linkonce.t_Dmain+0x157): undefined reference to
> `mysql_affected_rows'
> mysql_pragma.d:(.gnu.linkonce.t_Dmain+0x16c): undefined reference to
> `mysql_get_server_info'
> mysql_pragma.d:(.gnu.linkonce.t_Dmain+0x183): undefined reference to  
> `mysql_close'
> mysql.o: In function `mysql_fetch_array':
> mysql.d:(.gnu.linkonce.tmysql_fetch_array+0x29): undefined reference to
> `mysql_fetch_row'
> mysql.d:(.gnu.linkonce.tmysql_fetch_array+0x3b): undefined reference to
> `mysql_num_fields'
> mysql.o: In function `db_fetch_array':
> mysql.d:(.gnu.linkonce.tdb_fetch_array+0xd): undefined reference to
> `mysql_fetch_row'
> mysql.d:(.gnu.linkonce.tdb_fetch_array+0x35): undefined reference to
> `mysql_fetch_lengths'
> mysql.d:(.gnu.linkonce.tdb_fetch_array+0x4c): undefined reference to
> `mysql_num_fields'
> mysql.o: In function `db_fetch_assoc':
> mysql.d:(.gnu.linkonce.tdb_fetch_assoc+0xd): undefined reference to
> `mysql_fetch_row'
> mysql.d:(.gnu.linkonce.tdb_fetch_assoc+0x41): undefined reference to
> `mysql_fetch_lengths'
> mysql.d:(.gnu.linkonce.tdb_fetch_assoc+0x4e): undefined reference to
> `mysql_field_seek'
> mysql.d:(.gnu.linkonce.tdb_fetch_assoc+0x59): undefined reference to
> `mysql_fetch_field'
> mysql.o: In function `mysql_fetch_assoc':
> mysql.d:(.gnu.linkonce.tmysql_fetch_assoc+0x25): undefined reference to
> `mysql_fetch_row'
> mysql.d:(.gnu.linkonce.tmysql_fetch_assoc+0x3d): undefined reference to
> `mysql_field_seek'
> mysql.d:(.gnu.linkonce.tmysql_fetch_assoc+0x48): undefined reference to
> `mysql_fetch_field'
> collect2: ld returned 1 exit status
> --- errorlevel 1
>
> Is this possible.
> The goal is to run the programm with
> #!/usr/bin/dmd -run
>
> dmd 0.175 version
>
> Thanks


As far as I know, you still can't use pragma(lib,"") under linux.  It's  
only available in the windows version of dmd.

You have two options:

1) Add the following flag to the dmd command line:

   -L-lmysqlclient

2) use bud (build utility for d) and add the following to your source file:

   version(build) { pragma( link, libmysqlclient ); }

Number 2, I haven't tested on linux for awhile, so I'm not sure if it  
works.  But the build tool documents the availability of that feature.

-JJR


More information about the Digitalmars-d-learn mailing list