Цитата(_Pasha @ Jan 28 2013, 18:34)

Эх. Если бы еще была такая возможность:
например, задаем в большом кол-ве printf() строки, а они складываются в секцию без повторений. Дас ист фантастиш.
А ещё чтобы хвосты сшивал (и слюнки потекли…), т.е. для "write: done" и "done" заводил одну строку и для "done" показывал в её хвост…
Но это беда AVR.
Код
// merge.c
#include <stdio.h>
extern void foo();
void moo()
{
printf("-%s-\n", "fooo");
}
int main()
{
foo();
moo();
}
Код
// foo.c
#include <stdio.h>
void foo()
{
puts("fooo");
puts("another fooo");
}
Цитата
$ avr-gcc -O2 -o merge merge.c foo.c
$ strings merge
(кучка случайной чепухи)
-%s-
fooo
fooo
another fooo
У более других с этим вроде легче:
Цитата
$ gcc -O2 -s -o merge merge.c foo.c
$ strings merge
/lib64/ld-linux-x86-64.so.2
__gmon_start__
(кучка разного и случайной чепухи)
-%s-
another fooo
Цитата
$ arm-kgp-eabi-gcc -mcpu=cortex-m3 -mthumb -O2 -s -o merge merge.c foo.c
$ strings merge
(гора случайной чепухи)
-%s-
another fooo
0000000000000000INF
0123456789ABCDEF
0123456789abcdef
p.s. -fmerge-constants -fmerge-all-constants для avr-gcc не помогает, для остальных и не нужен оказался