Где заголовочные файлы СИ?

Форум поддержки для русскоязычных пользователей
Forum rules
Topics in this forum are automatically closed 6 months after creation.
Locked
sunbot

Где заголовочные файлы СИ?

Post by sunbot »

Установил mint cinnamon rebecca. Хотел написать программку и не нашел стандартные заоголовочные файлы библиотеки СИ. Где их взять?
Last edited by LockBot on Wed Dec 28, 2022 7:16 am, edited 1 time in total.
Reason: Topic automatically closed 6 months after creation. New replies are no longer allowed.
sunbot

Re: Где заголовочные файлы СИ?

Post by sunbot »

Через Synaptic установил пакет libc6-dev:i386 и они появились. Проблема решена
Olej
Level 3
Level 3
Posts: 104
Joined: Sun Apr 05, 2015 7:31 pm

Re: Где заголовочные файлы СИ?

Post by Olej »

sunbot wrote:Через Synaptic установил пакет libc6-dev:i386 и они появились. Проблема решена
Проблема не решена :?

С заголовочными файлами (хэдерами) проще.
А вот что с библиотеками делать?
Например с простейшей libm.so - математических функций.
При сборке любой программы, на 3 оператора сложнее hello-world :lol: получите:

Code: Select all

olej@nvidia ~/2015_WORK/own.BOOK/ManyLan/ex.32/triangle $ gcc -Wall -L/lib/i386-linux-gnu -lm triangle.c -o triangle_c
/tmp/cc0bABfr.o: In function `perimeter':
triangle.c:(.text+0x5e): undefined reference to `cabs'
/tmp/cc0bABfr.o: In function `square':
triangle.c:(.text+0xed): undefined reference to `cabs'
triangle.c:(.text+0x102): undefined reference to `cabs'
triangle.c:(.text+0x11c): undefined reference to `atan2'
triangle.c:(.text+0x133): undefined reference to `atan2'
triangle.c:(.text+0x13e): undefined reference to `sin'
collect2: error: ld returned 1 exit status
Это собиралась старая программа, которая в Fedora и Debian собирается в-лёт, без всяких дополнительных установок.

В смысле выбора средств программирования выбор дистрибюторов Mint удивляет. :x
Olej
Level 3
Level 3
Posts: 104
Joined: Sun Apr 05, 2015 7:31 pm

Re: Где заголовочные файлы СИ?

Post by Olej »

Olej wrote: Например с простейшей libm.so - математических функций.
При сборке любой программы, на 3 оператора сложнее hello-world :lol: получите:

Code: Select all

olej@nvidia ~/2015_WORK/own.BOOK/ManyLan/ex.32/triangle $ gcc -Wall -L/lib/i386-linux-gnu -lm triangle.c -o triangle_c
...
Это собиралась старая программа, которая в Fedora и Debian собирается в-лёт, без всяких дополнительных установок.
Коротко:
В Mint gcc (точнее его компоновщик ld) собран с такими опциями экономии (дурацкими!), что в командной строке gcc библиотека (любая!) должна записываться позже, чем имя файла, где она используется.
Поэтому командная строка выше (допустимая во всех UNIX like OS) должна быть записана:

Code: Select all

$ gcc -Wall -L/lib/i386-linux-gnu triangle.c -o triangle_c -lm
Или:

Code: Select all

$ gcc -Wall -L/lib/i386-linux-gnu triangle.c -lm -o triangle_c 
Это конечно полный идиотизм ... но это нужно учитывать.

Подробнее: здесь.
Locked

Return to “Русский - Russian”