Error on Linux: "cannot find source code for runtime library file 'object.d' "
Li Wang via Digitalmars-d
digitalmars-d at puremagic.com
Tue Jun 24 15:04:41 PDT 2014
I have got the same error when using dmd to compile the program
"msmc" https://github.com/lepisorus/msmc.
Error:
Error: cannot find source code for runtime library file 'object.d'
dmd might not be correctly installed. Run 'dmd -man' for
installation instructions
Specify path to file 'object.d' with -I switch
I also installed the dmd through bash script.
http://www.prowiki.org/wiki4d/wiki.cgi?action=browse&id=D__Tutorial/StartingWithD/Compiler/DMD&oldid=D__Tutorial/InstallingDCompiler
./install-d.sh -d -v 2.065.0
I did the following modification according to the suggestion here:
adding -I/home/lwang/usr/druntime/import in the dmd.conf file.
Now the .conf file looks like:
DFLAGS=-I/home/lwang/usr/include/d/phobos2
-I/home/lwang/usr/druntime/import -L-L/home/lwang/usr/lib
You can see that everything is in my home directory. while the
"druntime" directory is copied there.
After doing the above, I did not get over the error.
I do hope someone can help here, because it has become a pain in
the butt now.
On Saturday, 2 March 2013 at 10:54:48 UTC, Vectrum wrote:
> On Friday, 1 March 2013 at 19:12:16 UTC, Jonathan M Davis wrote:
>> On Friday, March 01, 2013 18:29:53 Vectrum wrote:
>>> I've just started using D but, unfortunately I
>>> got an error while compiling the following
>>> D code;
>>>
>>> import std.stdio;
>>> main()
>>> {
>>> writefln("%sHello, World!");
>>> }
>>>
>>> It gives me the following error;
>>>
>>> $ dmd hello.d
>>> Error: cannot find source code for runtime library file
>>> 'object.d'
>>> dmd might not be correctly installed. Run 'dmd -man' for
>>> installation instructions.
>>> import path[0] = /usr/local/src/phobos
>>>
>>> I installed D twice, used a shell-script second time when
>>> got the error but so phobos copied to two locations and
>>> dmd.conf has been changed accordingly.
>>>
>>> [Environment]
>>> DFLAGS=-I/usr/local/include/d/phobos2 -L-L/usr/local/lib
>>> DFLAGS=-I/usr/local/src/phobos -L-L/usr/local/lib
>>>
>>> Plase tell me what is the correct location for the lib and
>>> standard .d files.
>>> I'm getting very frustrated and none bothers to address
>>> the issue. I hope I haven't made a silly mistake.
>>
>> The correct one is pretty much wherever you want to put them.
>> It's just that
>> you have to put it in dmd.conf. As to your problem, I see
>> three issues right
>> off the bat:
>>
>> 1. You're resetting DFLAGS, not appending to it. Notice that
>> the only import
>> path listed in your error is the second one. The first one got
>> overwritten. I'd
>> suggest just putting it all on one line.
>>
>> 2. I don't know why you're listing two locations for Phobos
>> anyway. You need
>> a -I to point to where the Phobos src is located, and there's
>> only one set. -I
>> needs to point to whatever directory std and etc are in order
>> for the compiler
>> to find Phobos.
>>
>> 3. You're missing druntime's import files (hence the error,
>> since that's where
>> object.di is). So, you need a -I flag pointing to druntime's
>> import directory.
>>
>> However, if you're not going to use your package manager to
>> install dmd, I'd
>> suggest that you just download the zip file, unzip it
>> somewhere on your box,
>> and add its linux/bin directory to your PATH. If you do that,
>> it should all
>> just work.
>>
>> - Jonathan M Davis
>
> Thank you. I have solved it. I have put
> dmd2/src/druntime and dmd2/src/phobos
> to /usr/local/share and changed dmd.conf
> accordingly.
>
> [Environment]
>
> DFLAGS=-I/usr/local/share/dmd2/src/druntime/import
> -I/usr/local/share/dmd
> 2/src/phobos -L-L%@P%/../lib32 -L-L%@P%/../lib64
> -L--no-warn-search-mismatch -L--
> export-dynamic
>
> I installed two times and used shell-script for the
> second time so dmd.conf entries came in two lines
> and I dared not changed it. That's why (at least I assume)
> DFLAG value came in two lines. Now I've done it manually
> as I got the point.
>
> Unfortunately there is no clear indication that the
> two dirs must be on path. We are told to put only
> libphobos.a and dmd on path.
>
> Thanks again.
More information about the Digitalmars-d
mailing list