strange -fPIC compilation error

Charles Hixson via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Oct 31 09:26:45 PDT 2016


On 10/30/2016 11:34 PM, Daniel Kozak via Digitalmars-d-learn wrote:
> Dne 31.10.2016 v 02:30 Charles Hixson via Digitalmars-d-learn napsal(a):
>
>>
>> Well, that certainly changed the error messages.  With
>> dmd -defaultlib=/usr/lib/x86_64-linux-gnu/libphobos2.so test.d
>> I get:
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1121): Error: 
>> found 'nothrow' when expecting '{'
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1123): Error: 
>> mismatched number of curly brackets
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1124): Error: 
>> mismatched number of curly brackets
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1125): Error: 
>> mismatched number of curly brackets
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1126): Error: 
>> mismatched number of curly brackets
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1127): Error: 
>> mismatched number of curly brackets
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1128): Error: 
>> mismatched number of curly brackets
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1129): Error: 
>> mismatched number of curly brackets
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1133): Error: asm 
>> statements must end in ';'
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1136): Error: 
>> found 'private' instead of statement
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1146): Error: no 
>> identifier for declarator add
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1149): Error: no 
>> identifier for declarator usDone
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1149): Error: 
>> Declaration expected, not ':'
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1157): Error: 
>> Declaration expected, not '('
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1159): Error: 
>> Declaration expected, not 'foreach'
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1159): Error: 
>> Declaration expected, not '0'
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1164): Error: no 
>> identifier for declarator __fhnd_info[fd]
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1164): Error: 
>> Declaration expected, not '='
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1165): Error: 
>> Declaration expected, not 'return'
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1167): Error: 
>> unrecognized declaration
>> /usr/include/dmd/phobos/std/typecons.d(1124): Error: semicolon 
>> expected following function declaration
>>
> This seems to be problem with your installation, you probably have 
> diferen version of dmd compiler and phobos library. So you should 
> uninstall all your dmd packages and make sure there is no 
> /usr/include/dmd left in your system. And instal dmd only from one 
> source (d-apt idealy).
>
I've done that 2 or 3 times.  If that's the problem, then there are 
different versions stored in the repository.  Since I'm on debian 
testing I'd been assuming that there'd been some system change since I'd 
last used the compiler, and the debs weren't yet up to date. The only 
updates to my system prior to the compiler breaking HAD been via 
apt-get.  Since then I've used dpkg remove and install a couple of times 
to try other versions of dmd with no benefit.
Currently dmd-bin version 2.071.2-0
               libphobos            2.071.2-0
               libphobos            2.071.2-0
so they're LISTED as being the same version.  And dmd.conf was installed 
by the deb, and is (eliminating the comments):
[Environment32]
DFLAGS=-I/usr/include/dmd/phobos -I/usr/include/dmd/druntime/import 
-L-L/usr/lib/i386-linux-gnu -L--export-dynamic

[Environment64]
DFLAGS=-I/usr/include/dmd/phobos -I/usr/include/dmd/druntime/import 
-L-L/usr/lib/x86_64-linux-gnu -L--export-dynamic

But somewhere during the process (which included the nightly system 
update) the error messages changed, and now:
dmd test.d
yields:
/usr/include/dmd/druntime/import/core/stdc/stdio.d(1121): Error: found 
'nothrow' when expecting '{'
/usr/include/dmd/druntime/import/core/stdc/stdio.d(1123): Error: 
mismatched number of curly brackets
...
/usr/include/dmd/druntime/import/core/stdc/stdio.d(1167): Error: 
unrecognized declaration
/usr/include/dmd/phobos/std/typecons.d(1124): Error: semicolon expected 
following function declaration



More information about the Digitalmars-d-learn mailing list