GCC: как собрать библиотеку в один файл C? - PullRequest
1 голос
/ 11 июня 2011

Итак, у нас есть, например, ffmpeg, который можно скомпилировать в более чем 4 библиотеки.Возможно ли использовать GCC для компиляции \ сбора не в библиотеки .a или .so, а в несколько больших файлов C?

Ответы [ 2 ]

1 голос
/ 11 июня 2011

Вы можете использовать cpp с семейством аргументов -M для создания файла make, описывающего зависимости кода, а затем добавить правило для файлов .c и .h для добавления содержимого в тот же файл.

Если приложение не использует защиту #ifdef в файлах .h, это может вызвать предупреждения о макросах, определенных дважды.

1 голос
/ 11 июня 2011

Забавный вопрос, зачем вам это делать? В любом случае, вы можете попробовать и посмотреть, будет ли gcc -E делать то, что вы хотите - он только вызывает препроцессор. Поэтому вам, возможно, придется адаптировать исходный код для включения других файлов исходного кода.

MiLu@Dago: ~ > cat x.c
int x_num() {
        return 7;
}
MiLu@Dago: ~ > cat moin.c
#include <stdio.h>
#include "x.c"
int main() {
        printf("moin: %d\n", x_num());
        return 0;
}
MiLu@Dago: ~ > gcc -E moin.c | wc -l
1150

Я думаю, что лучше попробовать утилиту cat:

find -type f -name \*.c | xargs cat > all_my.c

Тем не менее, чего вы пытаетесь достичь?

...