strange -fPIC compilation error
Daniel Kozak via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Oct 31 11:23:21 PDT 2016
Dne 31.10.2016 v 18:06 Charles Hixson via Digitalmars-d-learn napsal(a):
>
> On 10/31/2016 09:26 AM, Charles Hixson via Digitalmars-d-learn wrote:
>> 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
> FWIW starting at
> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1121)::
> asm nothrow @nogc
> {
> mov EDX, num;
> lock;
> inc _iSemLockCtrs[EDX * 2];
> so nothrow isn't being seen as appropriate at the beginning of an asm
> block. After that I think it gets confused as 1123 doesn't HAVE a
> brace (i.e. curly bracket) in it.
>
when you type dmd --version what it prints?
More information about the Digitalmars-d-learn
mailing list