Page 2 of 3

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Wed May 24, 2017 11:34 pm
by JohnXenox
Я так понял нужна была библиотека "libisl.so.10". Поискал её на просторах всемирной поутины и нашёл - "libisl.so.10.2.2". Копировал её в папку "/usr/lib/x86_64-linux-gnu" и сделал на неё ссылку "ln -s libisl.so.10.2.2 libisl.so.10" в той же папке. Опять сделал make, и о чудо, библиотеку "libisl.so.10", больше не просит. Теперь другая проблема. Не может найти заголовочный файл "stdio.h".

Вот вывод с терминала:

Code: Select all

kos32-gcc -c -fno-ident -O2 -fomit-frame-pointer -U__WIN32__ -U_Win32 -U_WIN32 -U__MINGW32__ -UWIN32 -I ~/Sandbox/sdk/sources/newlib/libc/include -o hello.o hello.c
hello.c:1:19: fatal error: stdio.h: No such file or directory
 #include <stdio.h>
                   ^
compilation terminated.
Makefile:25: recipe for target 'hello.o' failed
make: *** [hello.o] Error 1
Где этот файл? Почему компилятор не находит его?

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Thu May 25, 2017 9:33 am
by Siemargl
У тебя не запускается именно компилятор - ищи библиотеку libisl.so.10 для gcc 5.4

На стековерфлоу рекомендуют сходить на https://gcc.gnu.org/wiki/InstallingGCC

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Thu May 25, 2017 12:49 pm
by JohnXenox
Siemargl wrote:У тебя не запускается именно компилятор - ищи библиотеку libisl.so.10 для gcc 5.4

На стековерфлоу рекомендуют сходить на https://gcc.gnu.org/wiki/InstallingGCC
Как раз компилятор работает.

Попробовал сделать так:

Code: Select all

kos32-gcc -c -g -U__WIN32__ -U_Win32 -U_WIN32 -U__MINGW32__ -UWIN32 -I ./sdk/sources/newlib/libc/include -o hello.o hello.c
и компиляция прошла успешно.

А вот линкер, линковать не хочет.
Делаю так:

Code: Select all

kos32-ld -static -nostdlib -T ./sdk/sources/newlib/static.lds -Map=hello.map -L ./sdk/lib -o hello hello.o -lc -lgcc -lc
Вывод с терминала, такой:

Code: Select all

kos32-ld: cannot find -lc
kos32-ld: cannot find -lc
Создаётся только файл "hello.map" и всё. Дальше не идёт. Что не хватает, непонятно. :(

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Thu May 25, 2017 3:19 pm
by Siemargl
он в путях, указанных в -L ищет библиотеку libc.a (lib- и .a дописываются автоматически)
это скомпилированная библиотека стандартных ф-ций newlib

ключик -g лишний, т.к. отладчика С под колибри нет
ну и для уменьшения бинарника потом применить к нему strip

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Fri May 26, 2017 12:01 am
by JohnXenox
Siemargl wrote:он в путях, указанных в -L ищет библиотеку libc.a (lib- и .a дописываются автоматически)
это скомпилированная библиотека стандартных ф-ций newlib

ключик -g лишний, т.к. отладчика С под колибри нет
ну и для уменьшения бинарника потом применить к нему strip
Понятно, но тем не менее, проблему с линкером это не решает. Видимо, это дело дохлое, поэтому перехожу на TCC. :(

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Fri May 26, 2017 12:24 am
by Siemargl
Вот, приложу чтобы далеко не бегать libc.a для статической линковки
libc.dll.a для динамической - там немного другая строка будет -T app-dynamic.lds -lgcc -lc.dll

Положить в gcc/lib.

Это для gcc 5.4

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Fri May 26, 2017 9:05 am
by Unduing
Для колибри был tcc, мне кажется для небольшого приложения это проще чем устанавливать весь пакет и выполнять необходимые настройки.
Единственное не помню где лежит.

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Fri May 26, 2017 3:58 pm
by Siemargl
tcc лежит тут
читать обсуждение дальше - с путями были заморочки

Кстати, упрек в том, что он не развивается - некорректен - недавно вышла версия 0.9.27
https://github.com/mirror/tinycc

Только это немного другая ветка (относительно версии для Колибри), с которой непросто смержится. Да и изменения x86 почти не касаются

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Fri May 26, 2017 9:41 pm
by JohnXenox
Siemargl wrote:Вот, приложу чтобы далеко не бегать libc.a для статической линковки
libc.dll.a для динамической - там немного другая строка будет -T app-dynamic.lds -lgcc -lc.dll

Положить в gcc/lib.

Это для gcc 5.4
Спасибо, но необходимости в libc.a нет, так как она включена в toolchain от Serge.

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Fri May 26, 2017 9:52 pm
by JohnXenox
Siemargl wrote:tcc лежит тут
читать обсуждение дальше - с путями были заморочки
Спасибо, буду посмотреть. :mrgreen:
Siemargl wrote: Кстати, упрек в том, что он не развивается - некорректен - недавно вышла версия 0.9.27
https://github.com/mirror/tinycc

Только это немного другая ветка (относительно версии для Колибри), с которой непросто смержится. Да и изменения x86 почти не касаются
Ну, я заходил на оф. сайт, а там, лежит старая версия 0.9.26 (2013). Про tcc на github, не знал, но коли так, то это чудненько. :)

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Fri May 26, 2017 10:01 pm
by JohnXenox
Unduing wrote:Для колибри был tcc, мне кажется для небольшого приложения это проще чем устанавливать весь пакет и выполнять необходимые настройки.
Проще, но мы, лёгких путей не ищем - хардкор наше всё но оптимизации нет. :)

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Fri May 26, 2017 10:19 pm
by JohnXenox
Всё-таки решил продолжить разбираться с kos-gcc. Долго думал и понял, что линкеру "kos32-ld" не хватало библиотеки "libc.a". Надо было, прописать к ней путь в командной строке. Теперь линкует.

В общем, строка такая:

Code: Select all

kos32-ld -static -nostdlib -T ./sdk/sources/newlib/static.lds -Map=hello.map -L ./sdk/lib -L /usr/local/win32/lib -o hello hello.o -lc -lgcc -lc
Но теперь, не работает "kos32-objcopy".

Делаю так:

Code: Select all

kos32-objcopy hello -O hello.kex
Вывод с ошибкой, такой:

Code: Select all

kos32-objcopy:stC5GnIu: Invalid bfd target
WTF спрашивается? :evil:

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Fri May 26, 2017 10:33 pm
by Siemargl
kos32-objcopy hello -O binary

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Sat May 27, 2017 12:26 am
by JohnXenox
Siemargl wrote:kos32-objcopy hello -O binary
Во имя Исаака Ньютона, спасибо! Исполняемый файл, теперь есть. :D Только что-то больно большой - 111.4K. :?

Re: Минимальная граф. программа для Колибри без лишних зависимостей на C (gcc, Linux)

Posted: Sat May 27, 2017 1:13 am
by Siemargl
перед objcopy надо делать strip - удаляет ненужную для отладки инфу

вариант 2 - собирать с libc.dll.a (strip все= нужен)