EmbDev.net

Forum: ARM programming with GCC/GNU tools Networking Eclipse projects


von Alan R. (Company: XC Comms Ltd) (rousey)


Rate this post
useful
not useful
My project involves multiple modules that communicate with each other. 
It is very helpful to be able to run two instances of the project on two 
PC's connected to different targets, but sharing the same source code so 
changes made to debug one of the targets are automatically included in 
the other one.

I am developing it using Eclipse, GCC and GNU. I have built a project 
named DISPLAY on a PC that has the network name Server.  Within the 
project folder I have two sub-folders named 'Source' and 'Include' 
containing .c and .h files respectively.  There is an additional file in 
'Include' named stm32rom.ld which contains the processor characteristics 
needed by the linker.  There is a third folder named 'obj' for the 
compiler and linker output files.

The makefile on Server invokes the compiler using commands of the form 
"gcc -c -I../DISPLAY/Include ../DISPLAY/Source/DisplayILI9325.c -o 
obj/DisplayILI9325.o".  The linker uses a command of the form "gcc 
-I../DISPLAY/Include obj/DisplayILI9325.o 
-T../DISPLAY/Include/stm32rom.ld obj/DISPLAY.elf" (note that other 
option switches have been omitted for simplicity).  This project 
compiles and links correctly.

I can access Server from another PC networked to this, named T42. I have 
copied the project folder to a folder on T42, excluding the 'Source' and 
'Header' sub-folders. I then created new 'Source' and 'Include' folders 
that access the relevant folders on Server. (For an explanation of how 
to do this, see below *).

I modified the compiler commands in makefile on the T42 to "gcc -c 
-I//Server/S/Software/DISPLAY/Include 
//Server/S/Software/DISPLAY/Source/DisplayILI9325.c -o 
obj/DisplayILI9325.o", and the linker commands to "gcc 
-I//Server/S/Software/DISPLAY/Include obj/DisplayILI9325.o 
-T//Server/S/Software/DISPLAY/Include/stm32rom.ld obj/DISPLAY.elf".

When I build the project on T42 it correctly compiles each module, but 
fails to link with the error message "cannot open linker script file 
//Server/S/Software/DISPLAY/Include/stm32rom.ld: No such file or 
directory".

I can't understand this, since the -T command format is exactly the same 
as the -I and compiler command formats, which are executed correctly. 
The makefile is identical to that used on Server, except for the folder 
definitions.

Any ideas why the compiler can access networked files, and the linker 
can access networked -I files, but can't access a networked -T linker 
script file?

*  To configure an Eclipse project to access networked folders:
In the Eclipse 'Project Exp' window right-click on the project folder 
and select New Folder. In the dialog window click '<< Advanced' then 
select 'Link to alternate location (Linked Folder)'.  In the box below 
enter the network address of the required folder.

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.