Board.KolibriOS.org

Official KolibriOS board
It is currently Wed May 22, 2019 12:01 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 41 posts ]  Go to page Previous 1 2 3 Next
Author Message
PostPosted: Wed May 24, 2017 11:34 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 170
Я так понял нужна была библиотека "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:
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
Где этот файл? Почему компилятор не находит его?

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Thu May 25, 2017 9:33 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
У тебя не запускается именно компилятор - ищи библиотеку libisl.so.10 для gcc 5.4

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


Top
   
PostPosted: Thu May 25, 2017 12:49 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 170
Siemargl wrote:
У тебя не запускается именно компилятор - ищи библиотеку libisl.so.10 для gcc 5.4

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

Попробовал сделать так:
Code:
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:
kos32-ld -static -nostdlib -T ./sdk/sources/newlib/static.lds -Map=hello.map -L ./sdk/lib -o hello hello.o -lc -lgcc -lc
Вывод с терминала, такой:
Code:
kos32-ld: cannot find -lc
kos32-ld: cannot find -lc

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

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Thu May 25, 2017 3:19 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
он в путях, указанных в -L ищет библиотеку libc.a (lib- и .a дописываются автоматически)
это скомпилированная библиотека стандартных ф-ций newlib

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


Top
   
PostPosted: Fri May 26, 2017 12:01 am 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 170
Siemargl wrote:
он в путях, указанных в -L ищет библиотеку libc.a (lib- и .a дописываются автоматически)
это скомпилированная библиотека стандартных ф-ций newlib

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

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Fri May 26, 2017 12:24 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Вот, приложу чтобы далеко не бегать libc.a для статической линковки
libc.dll.a для динамической - там немного другая строка будет -T app-dynamic.lds -lgcc -lc.dll

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

Это для gcc 5.4


Attachments:
lib.zip [219.32 KiB]
Downloaded 65 times
Top
   
PostPosted: Fri May 26, 2017 9:05 am 
Offline

Joined: Tue May 11, 2010 8:14 am
Posts: 112
Для колибри был tcc, мне кажется для небольшого приложения это проще чем устанавливать весь пакет и выполнять необходимые настройки.
Единственное не помню где лежит.


Top
   
PostPosted: Fri May 26, 2017 3:58 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
tcc лежит тут
читать обсуждение дальше - с путями были заморочки

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

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


Top
   
PostPosted: Fri May 26, 2017 9:41 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 170
Siemargl wrote:
Вот, приложу чтобы далеко не бегать libc.a для статической линковки
libc.dll.a для динамической - там немного другая строка будет -T app-dynamic.lds -lgcc -lc.dll

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

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

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Fri May 26, 2017 9:52 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 170
Siemargl wrote:
tcc лежит тут
читать обсуждение дальше - с путями были заморочки
Спасибо, буду посмотреть. :mrgreen:
Siemargl wrote:
Кстати, упрек в том, что он не развивается - некорректен - недавно вышла версия 0.9.27
https://github.com/mirror/tinycc

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

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Fri May 26, 2017 10:01 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 170
Unduing wrote:
Для колибри был tcc, мне кажется для небольшого приложения это проще чем устанавливать весь пакет и выполнять необходимые настройки.
Проще, но мы, лёгких путей не ищем - хардкор наше всё но оптимизации нет. :)

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Fri May 26, 2017 10:19 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 170
Всё-таки решил продолжить разбираться с kos-gcc. Долго думал и понял, что линкеру "kos32-ld" не хватало библиотеки "libc.a". Надо было, прописать к ней путь в командной строке. Теперь линкует.

В общем, строка такая:
Code:
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:
kos32-objcopy hello -O hello.kex
Вывод с ошибкой, такой:
Code:
kos32-objcopy:stC5GnIu: Invalid bfd target
WTF спрашивается? :evil:

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Fri May 26, 2017 10:33 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
kos32-objcopy hello -O binary


Top
   
PostPosted: Sat May 27, 2017 12:26 am 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 170
Siemargl wrote:
kos32-objcopy hello -O binary
Во имя Исаака Ньютона, спасибо! Исполняемый файл, теперь есть. :D Только что-то больно большой - 111.4K. :?

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Sat May 27, 2017 1:13 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
перед objcopy надо делать strip - удаляет ненужную для отладки инфу

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 41 posts ]  Go to page Previous 1 2 3 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited