Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
April 17, 2008 gdc compiler/linker error | ||||
---|---|---|---|---|
| ||||
I am getting a linker error when I try to compile my code as follows: jonathan@blackbeard:~/workspace/ccb/matrix$ gdmd test.d Matrix.d Vector.d Util.d ../MySQLConnection.d -unittest -I../.. -L/usr/lib/atlas/libptcblas.a -L/usr/lib/atlas/liblapack.a -L/usr/lib/atlas/libatlas.a -L/usr/lib/atlas/libcblas.a -L/usr/lib/atlas/libblas.a -L/usr/lib/libmysqlclient.so -vdmd /usr/bin/gdc -funittest -I ../.. -c test.d -o test.o /usr/bin/gdc -funittest -I ../.. -c Matrix.d -o Matrix.o /usr/bin/gdc -funittest -I ../.. -c Vector.d -o Vector.o /usr/bin/gdc -funittest -I ../.. -c Util.d -o Util.o /usr/bin/gdc -funittest -I ../.. -c ../MySQLConnection.d -o MySQLConnection.o /usr/bin/gdc -funittest -I ../.. test.o Matrix.o Vector.o Util.o MySQLConnection.o -Wl,/usr/lib/atlas/libptcblas.a -Wl,/usr/lib/atlas/liblapack.a -Wl,/usr/lib/atlas/libatlas.a -Wl,/usr/lib/atlas/libcblas.a -Wl,/usr/lib/atlas/libblas.a -Wl,/usr/lib/libmysqlclient.so -o test Util.o: In function `_D3ccb6matrix4Util11__unittest0FZv': Util.d:(.text+0x2ec4): undefined reference to `_D3ccb15MySQLConnection15mysqlConnection7__ClassZ' Util.d:(.text+0x2f22): undefined reference to `_D3ccb15MySQLConnection15mysqlConnection5_ctorMFAaAaAaAaZC3ccb15MySQLConnection15mysqlConnection' collect2: ld returned 1 exit status I am trying to use gdc for its 64-bit compilation, but this is a problem. I checked the compiled code inside MySQLConnection.o with objdump and found that _D3ccb15MySQLConnection15MysqlConnection7__ClassZ exists. The only different between this label and the one that is causing the error is the m in the last term. The name of the class is MysqlConnection. I am using gdc (GCC) 4.1.3 20070831 (prerelease gdc 0.25, using dmd 1.021) (Ubuntu 0.25-4.1.2-16ubuntu1). What can I do to get this is compile and link? Thank you taking to read this, JC |
April 17, 2008 Re: gdc compiler/linker error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan Crapuchettes | Jonathan Crapuchettes wrote: > I am getting a linker error when I try to compile my code as follows: > > jonathan@blackbeard:~/workspace/ccb/matrix$ gdmd test.d Matrix.d Vector.d > Util.d ../MySQLConnection.d -unittest -I../.. > -L/usr/lib/atlas/libptcblas.a -L/usr/lib/atlas/liblapack.a > -L/usr/lib/atlas/libatlas.a -L/usr/lib/atlas/libcblas.a > -L/usr/lib/atlas/libblas.a -L/usr/lib/libmysqlclient.so -vdmd > /usr/bin/gdc -funittest -I ../.. -c test.d -o test.o > /usr/bin/gdc -funittest -I ../.. -c Matrix.d -o Matrix.o > /usr/bin/gdc -funittest -I ../.. -c Vector.d -o Vector.o > /usr/bin/gdc -funittest -I ../.. -c Util.d -o Util.o > /usr/bin/gdc -funittest -I ../.. -c ../MySQLConnection.d -o > MySQLConnection.o /usr/bin/gdc -funittest -I ../.. test.o Matrix.o > Vector.o Util.o MySQLConnection.o -Wl,/usr/lib/atlas/libptcblas.a > -Wl,/usr/lib/atlas/liblapack.a -Wl,/usr/lib/atlas/libatlas.a > -Wl,/usr/lib/atlas/libcblas.a -Wl,/usr/lib/atlas/libblas.a > -Wl,/usr/lib/libmysqlclient.so -o test Util.o: In function > `_D3ccb6matrix4Util11__unittest0FZv': Util.d:(.text+0x2ec4): undefined > reference to `_D3ccb15MySQLConnection15mysqlConnection7__ClassZ' > Util.d:(.text+0x2f22): undefined reference to > `_D3ccb15MySQLConnection15mysqlConnection5_ctorMFAaAaAaAaZC3ccb15MySQLConnection15mysqlConnection' > collect2: ld returned 1 exit status > > I am trying to use gdc for its 64-bit compilation, but this is a problem. I checked the compiled code inside MySQLConnection.o with objdump and found that _D3ccb15MySQLConnection15MysqlConnection7__ClassZ exists. The only different between this label and the one that is causing the error is the m in the last term. The name of the class is MysqlConnection. > > I am using gdc (GCC) 4.1.3 20070831 (prerelease gdc 0.25, using dmd 1.021) > (Ubuntu 0.25-4.1.2-16ubuntu1). > > What can I do to get this is compile and link? > > Thank you taking to read this, > JC If you pick up a d demangler and run it on the output, it'll make it easier for others to interpret. It may even have the unexpected side effect of making the error obvious. |
April 17, 2008 Re: gdc compiler/linker error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jason House | Jason House Wrote: > Jonathan Crapuchettes wrote: > > > I am getting a linker error when I try to compile my code as follows: > > > > jonathan@blackbeard:~/workspace/ccb/matrix$ gdmd test.d Matrix.d Vector.d > > Util.d ../MySQLConnection.d -unittest -I../.. > > -L/usr/lib/atlas/libptcblas.a -L/usr/lib/atlas/liblapack.a > > -L/usr/lib/atlas/libatlas.a -L/usr/lib/atlas/libcblas.a > > -L/usr/lib/atlas/libblas.a -L/usr/lib/libmysqlclient.so -vdmd > > /usr/bin/gdc -funittest -I ../.. -c test.d -o test.o > > /usr/bin/gdc -funittest -I ../.. -c Matrix.d -o Matrix.o > > /usr/bin/gdc -funittest -I ../.. -c Vector.d -o Vector.o > > /usr/bin/gdc -funittest -I ../.. -c Util.d -o Util.o > > /usr/bin/gdc -funittest -I ../.. -c ../MySQLConnection.d -o > > MySQLConnection.o /usr/bin/gdc -funittest -I ../.. test.o Matrix.o > > Vector.o Util.o MySQLConnection.o -Wl,/usr/lib/atlas/libptcblas.a > > -Wl,/usr/lib/atlas/liblapack.a -Wl,/usr/lib/atlas/libatlas.a > > -Wl,/usr/lib/atlas/libcblas.a -Wl,/usr/lib/atlas/libblas.a > > -Wl,/usr/lib/libmysqlclient.so -o test Util.o: In function > > `_D3ccb6matrix4Util11__unittest0FZv': Util.d:(.text+0x2ec4): undefined > > reference to `_D3ccb15MySQLConnection15mysqlConnection7__ClassZ' > > Util.d:(.text+0x2f22): undefined reference to > > > `_D3ccb15MySQLConnection15mysqlConnection5_ctorMFAaAaAaAaZC3ccb15MySQLConnection15mysqlConnection' > > collect2: ld returned 1 exit status > > > > I am trying to use gdc for its 64-bit compilation, but this is a problem. I checked the compiled code inside MySQLConnection.o with objdump and found that _D3ccb15MySQLConnection15MysqlConnection7__ClassZ exists. The only different between this label and the one that is causing the error is the m in the last term. The name of the class is MysqlConnection. > > > > I am using gdc (GCC) 4.1.3 20070831 (prerelease gdc 0.25, using dmd 1.021) > > (Ubuntu 0.25-4.1.2-16ubuntu1). > > > > What can I do to get this is compile and link? > > > > Thank you taking to read this, > > JC > > If you pick up a d demangler and run it on the output, it'll make it easier for others to interpret. It may even have the unexpected side effect of making the error obvious. If hes using tango then there isn't one I don't think Phobos has one for use in Linux This question is in the ".D" forum also and I passed on it in case I lower your chances of an answer, however I'd suggest that somewhere in reference to `_D3ccb15MySQLConnection15mysqlConnection7__ClassZ' and `_D3ccb15MySQLConnection15mysqlConnection5_ctorMFAaAaAaAaZC3ccb15MySQLConnection15mysqlConnection' is a clue . I would be looking for "MySQLConnection.mysqlConnection" typed somewhere instead of "MySQLConnection.MysqlConnection" You are right about the m I think Anyway some much smarter people on here will hopefuly read the output and be able to interpret it clearly for you |
April 18, 2008 Re: gdc compiler/linker error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan Crapuchettes | Jonathan Crapuchettes Wrote:
> I am getting a linker error when I try to compile my code as follows:
> /usr/bin/gdc -funittest -I ../.. test.o Matrix.o Vector.o Util.o
> MySQLConnection.o -Wl,/usr/lib/atlas/libptcblas.a -Wl,/usr/lib/atlas/liblapack.a
> -Wl,/usr/lib/atlas/libatlas.a -Wl,/usr/lib/atlas/libcblas.a
> -Wl,/usr/lib/atlas/libblas.a -Wl,/usr/lib/libmysqlclient.so -o test
> Util.o: In function `_D3ccb6matrix4Util11__unittest0FZv':
> Util.d:(.text+0x2ec4): undefined reference to
> `_D3ccb15MySQLConnection15mysqlConnection7__ClassZ'
> Util.d:(.text+0x2f22): undefined reference to
Have you tried putting MySQLConnection.o before Util.o when linking?
cheers,
Markus
|
April 18, 2008 Re: gdc compiler/linker error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Markus Dittrich | Yes, but sadly I got the same result.
JC
Markus Dittrich wrote:
> Jonathan Crapuchettes Wrote:
>
>> I am getting a linker error when I try to compile my code as follows:
>> /usr/bin/gdc -funittest -I ../.. test.o Matrix.o Vector.o Util.o MySQLConnection.o -Wl,/usr/lib/atlas/libptcblas.a -Wl,/usr/lib/atlas/liblapack.a -Wl,/usr/lib/atlas/libatlas.a -Wl,/usr/lib/atlas/libcblas.a -Wl,/usr/lib/atlas/libblas.a -Wl,/usr/lib/libmysqlclient.so -o test
>> Util.o: In function `_D3ccb6matrix4Util11__unittest0FZv':
>> Util.d:(.text+0x2ec4): undefined reference to `_D3ccb15MySQLConnection15mysqlConnection7__ClassZ'
>> Util.d:(.text+0x2f22): undefined reference to
>
> Have you tried putting MySQLConnection.o before Util.o when linking?
>
> cheers,
> Markus
>
|
April 18, 2008 Re: gdc compiler/linker error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan Crapuchettes | "Jonathan Crapuchettes" <jcrapuchettes@gmail.com> wrote in message news:fu8iu2$98s$1@digitalmars.com... >I am getting a linker error when I try to compile my code as follows: > > jonathan@blackbeard:~/workspace/ccb/matrix$ gdmd test.d Matrix.d Vector.d > Util.d > ../MySQLConnection.d -unittest -I../.. -L/usr/lib/atlas/libptcblas.a -L/usr/lib/atlas/liblapack.a > -L/usr/lib/atlas/libatlas.a -L/usr/lib/atlas/libcblas.a -L/usr/lib/atlas/libblas.a > -L/usr/lib/libmysqlclient.so -vdmd > /usr/bin/gdc -funittest -I ../.. -c test.d -o test.o > /usr/bin/gdc -funittest -I ../.. -c Matrix.d -o Matrix.o > /usr/bin/gdc -funittest -I ../.. -c Vector.d -o Vector.o > /usr/bin/gdc -funittest -I ../.. -c Util.d -o Util.o > /usr/bin/gdc -funittest -I ../.. -c ../MySQLConnection.d -o > MySQLConnection.o > /usr/bin/gdc -funittest -I ../.. test.o Matrix.o Vector.o Util.o > MySQLConnection.o -Wl,/usr/lib/atlas/libptcblas.a -Wl,/usr/lib/atlas/liblapack.a > -Wl,/usr/lib/atlas/libatlas.a -Wl,/usr/lib/atlas/libcblas.a -Wl,/usr/lib/atlas/libblas.a > -Wl,/usr/lib/libmysqlclient.so -o test > Util.o: In function `_D3ccb6matrix4Util11__unittest0FZv': > Util.d:(.text+0x2ec4): undefined reference to > `_D3ccb15MySQLConnection15mysqlConnection7__ClassZ' > Util.d:(.text+0x2f22): undefined reference to > `_D3ccb15MySQLConnection15mysqlConnection5_ctorMFAaAaAaAaZC3ccb15MySQLConnection15mysqlConnection' > collect2: ld returned 1 exit status > > I am trying to use gdc for its 64-bit compilation, but this is a problem. I checked the compiled code inside MySQLConnection.o with objdump and found that _D3ccb15MySQLConnection15MysqlConnection7__ClassZ exists. The only different between this label and the one that is causing the error is the m in the last term. The name of the class is MysqlConnection. > > I am using gdc (GCC) 4.1.3 20070831 (prerelease gdc 0.25, using dmd 1.021) (Ubuntu 0.25-4.1.2-16ubuntu1). > > What can I do to get this is compile and link? > > Thank you taking to read this, > JC I don't see why a single compiler would generate two different mangled names for the same identifier. As such, I wonder where the two object files involved were obtained from? Could they have been built with different compiler versions somehow? Did you obtain one of them as a binary? If so, perhaps the case in the associated extern declaration is incorrect... I also know that DMD acts differently if you compile a series of files in the one command or compile each seperately and the link. Don't think this would apply to GDC but another thought... Good luck |
April 18, 2008 Re: gdc compiler/linker error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Neil Vice | Thank you for your thoughts, but as you can see from the gdmd output, all object files were created at the same time by the same compiler. I am starting to wonder if it isn't a bug in gdc.
Thanks again,
JC
Neil Vice wrote:
> "Jonathan Crapuchettes" <jcrapuchettes@gmail.com> wrote in message news:fu8iu2$98s$1@digitalmars.com...
>> I am getting a linker error when I try to compile my code as follows:
>>
>> jonathan@blackbeard:~/workspace/ccb/matrix$ gdmd test.d Matrix.d Vector.d Util.d ../MySQLConnection.d -unittest -I../.. -L/usr/lib/atlas/libptcblas.a -L/usr/lib/atlas/liblapack.a -L/usr/lib/atlas/libatlas.a -L/usr/lib/atlas/libcblas.a -L/usr/lib/atlas/libblas.a -L/usr/lib/libmysqlclient.so -vdmd
>> /usr/bin/gdc -funittest -I ../.. -c test.d -o test.o
>> /usr/bin/gdc -funittest -I ../.. -c Matrix.d -o Matrix.o
>> /usr/bin/gdc -funittest -I ../.. -c Vector.d -o Vector.o
>> /usr/bin/gdc -funittest -I ../.. -c Util.d -o Util.o
>> /usr/bin/gdc -funittest -I ../.. -c ../MySQLConnection.d -o MySQLConnection.o
>> /usr/bin/gdc -funittest -I ../.. test.o Matrix.o Vector.o Util.o MySQLConnection.o -Wl,/usr/lib/atlas/libptcblas.a -Wl,/usr/lib/atlas/liblapack.a -Wl,/usr/lib/atlas/libatlas.a -Wl,/usr/lib/atlas/libcblas.a -Wl,/usr/lib/atlas/libblas.a -Wl,/usr/lib/libmysqlclient.so -o test
>> Util.o: In function `_D3ccb6matrix4Util11__unittest0FZv':
>> Util.d:(.text+0x2ec4): undefined reference to `_D3ccb15MySQLConnection15mysqlConnection7__ClassZ'
>> Util.d:(.text+0x2f22): undefined reference to `_D3ccb15MySQLConnection15mysqlConnection5_ctorMFAaAaAaAaZC3ccb15MySQLConnection15mysqlConnection'
>> collect2: ld returned 1 exit status
>>
>> I am trying to use gdc for its 64-bit compilation, but this is a problem. I checked the compiled code inside MySQLConnection.o with objdump and found that _D3ccb15MySQLConnection15MysqlConnection7__ClassZ exists. The only different between this label and the one that is causing the error is the m in the last term. The name of the class is MysqlConnection.
>>
>> I am using gdc (GCC) 4.1.3 20070831 (prerelease gdc 0.25, using dmd 1.021) (Ubuntu 0.25-4.1.2-16ubuntu1).
>>
>> What can I do to get this is compile and link?
>>
>> Thank you taking to read this,
>> JC
>
> I don't see why a single compiler would generate two different mangled names for the same identifier. As such, I wonder where the two object files involved were obtained from? Could they have been built with different compiler versions somehow? Did you obtain one of them as a binary? If so, perhaps the case in the associated extern declaration is incorrect...
>
> I also know that DMD acts differently if you compile a series of files in the one command or compile each seperately and the link. Don't think this would apply to GDC but another thought...
>
> Good luck
>
>
|
Copyright © 1999-2021 by the D Language Foundation