LinuxForum.Fans
Тема

Проблемы с компиляцией программы на Си

Автор: hardorsoft 8 сообщений 3720 просмотров
#119212

Доброго дня!

text

/*
    Программа выводит пример на умножение из двух однозначных
    чисел, запрашивает ответ пользователя, проверяет его и вы-
    водит сообщение "Правильно" или "Вы ошиблись." и правильный 
    результат.
*/
#include "locale.h"
#include <stdio.h>
#include <curses.h>
#include <time.h>     //     для доступа к time
#include <stdlib.h>    //    для доступа к srand

int main() { int m1, m2, p; // сомножители и произведение int otv; // ответ испытуемого time_t t; // текущее время - для инициализации // генератора случайных чисел char *loc; loc = setlocale(LC_CTYPE,"ru_RU.UTF-8"); srand((unsigned) time(&t)); // инициализация генератора // случайных чисел m1 = rand() % 9 + 1; m2 = rand() % 9 + 1; p = m1 * m2; printw("Сколько будет %ix%i ?\n", m1, m2); printw("Введите ответ и нажмите <Enter>\n"); printw("->"); scanw("%i", &otv); if (p == otv) printw("Правильно\n"); else printw("Вы ошиблись.\n %ix%i=%i ", m1, m2, p); getch(); endwin(); return 0; } // Не обходимо разобраться с линковкой бибилиотек time.h и stdlib

Вопрос как скомпилировать программу правильно?
gcc myprog.c -o myprog -lncursesw

Пробовал -ltime и -lntime
ответ терминала:
[console]/usr/bin/ld: cannot find -lntime
collect2: выполнение ld завершилось с кодом возврата 1
[/console]
Возможно нужно установить дополнительно какую-нибудь библиотеку?
Вернее какой должен быть параметр и самое главное в какой литературе можно найти ответы на подобные вопросы?

#119213

time.h и stdlib.h - это стандартные хедеры, а не какие-то библотеки => программа линкуется с [g]libc - это происходит "автоматически"

hardorsoft написал:
gcc myprog.c -o myprog -lncursew

у вас очепятка:
gcc myprog.c -o myprog -lncursesw

по поводу литературы:
1) man ln (если осилите)
2) man gcc (тоже самое)
3) какая-нить литература по прграммированию в *nix/linux
Но я ни где не встречал подробного описания ключей компиляции/подробностей о линковке библиотек
4) собственный разум... вы сами пишите программу и сами знаете какие библиотеки она использует...

К делу не относться, но srand обычно инициализируется так:
srand((unsigned) time(0));
тобишь структура time_t лишняя
ЗЫ: c ncurses не работал, но вы уверены, что везде должно быть %i вместо %d?

#119230

hardorsoft, ncurses - обязательное условие?
линковать надо только его.
в остальном согласен с Fat-Zer.

#119615

Так значит никто помочь не может?
Кстати http://cirishen.blogspot.com/
мой блог если будут задавать вопросы и вам в лом будет отвечать, то можете
отправлять на него, если это будет уместно.
Закон для человека.

#119749
hardorsoft написал:
Блин нашел
http://linux.yaroslavl.ru/docs/prog/glibc/glibc-13.html
Там все для начинающих в избытке.
Вот что я от вас ждал.

вопрос надо было задавать "что посоветуете почитать начинающему на Си", а вы спросили "что почитать по повод ключей компилятора/линкера"...

#120615

Да, вы правы вопрос задан не точно.
Спасибо что поправили.
Доку прочту и постараюсь запомнить, что смогу. :-)
Все-таки проблема решена и ответ готов.
Ответ: В данном случае параметров никаких не надо.
Обо всем остальном можно почитать по адресу:
http://linux.yaroslavl.ru/docs/prog
Всем спасибо.

Войдите или зарегистрируйтесь, чтобы ответить.