Hi, all
=============================================
There's a linker commands in the Kbuild like that:
cmd_link_o_target = $(if $(strip $(obj-y)),\
$(LD) $(ld_flags) -r -o $@ $(filter $(obj-y), $^), \
rm -f $@; $(AR) rcs $@)
Descriptions from GCC:
-r
--relocateable
Generate relocatable output-i.e., generate an output file that can in turn
serve as input to ld. This is often called partial linking. As a side
effect, in environments that support standard Unix magic numbers, this
option also sets the output file's magic number to OMAGIC. If this option is
not specified, an absolute file is produced. When linking C++ programs, this
option will not resolve references to constructors; to do that, use '-Ur'.
When an input file does not have the same format as the output file, partial
linking is only supported if that input file does not contain any
relocations.
Different output formats can have further restrictions; for example some
a.outbased formats do not support partial linking with input files in other
formats
at all.
This option does the same thing as '-i'.
As a result, the "ld -r -o $@ $^" command links the $^ object files into a
single object file $@.
=============================================
Could this style of link operation be implemented in SDCC?
=============================================
Currently, I'm using a stupid command like:
cmd_link_o_target = rm -f $@; $(AR) -Sqc $(EXTRA_ARFLAGS) $@ \
$(filter-out %built-in.lib, $(filter $(obj-y), $^)) \
$(foreach l,$(filter %built-in.lib, $(filter $(obj-y), $^)), \
$(foreach f,$(shell $(AR) -t $(l)), \
$(addprefix $(subst built-in.lib,,$(l)), $(f))))
As I know (but may wrong), sdcc could not link object files with the same
basename but different directory prefix, I have to first create static
libraries (built-in.lib) for each bundle of object files in the same
directory. The problem is how to put the object files linked in the
subdirectories' built-in.lib into the current directory's built-in.lib. The
stupid command can extract the object files names of the subdirectories'
built-in.lib, and link them along with the current directory's object files
into a single static built-in.lib. In this way, I could finally link all of
such libraries together but directory depth are limited.
=============================================
Are there any smarter SDCC methods to implement the previous style link
operation? This is quite useful for organizing large C projects.
Best regards/ZETALOG
------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user