Форум Херсона. Форум Херсонской молодежи.

Форум Херсона. Форум Херсонской молодежи. (http://forum.norma4.net.ua/)
-   Программирование (http://forum.norma4.net.ua/programmirovanie/)
-   -   Сборка С проектов (http://forum.norma4.net.ua/programmirovanie/94589-sborka-s-proektov.html)

kovalev 10.05.2022 07:51

Сборка С проектов
 

Вопрос по сборке. В книжках при сборке простых проектов в командной строке перечисляются собственно файлы исходников, заголовки ищутся по опции -I в той же командной строке. В чем вопрос - если у меня в проекте есть какой-нить main.c , в котором включается например #include "lib.h" (пути поиска заголовков прописаны в IDE или же в той же командной строке), где компилятор ищет файл собственно бибилиотки (исходника) lib.c (в опциях gcc вроде нет опции для пути исходников ?) и если таки путь указан как-то, что, компилируются все *.с файлы в этой папке, и потом уже при сборке используются все эти объектные файлы ?

Lester 10.05.2022 10:56

Крім етапу компіляції (створення об'єктних файлів *.o з сорців) є ще етап лінковки. Там вже беруться всі створені об'єктні файли + чужі об'єктні файли (можливо, але рідко) *.o, об'єктні файли у вигляді статичної бібліотеки *.a, та/або просто динамічні бібліотеки *.so. У всьому цьому лінковщик шукає і розв'язує посилання на окремі символи. Тому, якщо ти використовуєшь зовнішню бібліотеку, тобі або треба вказати лінковку на неї (-L та -l опції), щоб лінковщик "побачив" *.a або *.so файл від неї, або включити її файли до проекту.

Почесав затылок, юзер дописал через 3 минуты
Якщо це стандартна бібліотека, яка встановлена в системну директорію, то достатньо просто додати, наприклад, опцію -lX11.

kovalev 10.05.2022 21:59

уточню вопрос - к примеру хочу поблимкать светодиодом на AVR контроллере в среде например vscode, подключив в main.c Arduino.h (ну вот хочется именно так, путь к Arduino либе не в пути проекта). В настройках vscode прописал -I/Path/ToArduino/Headers, заголовки видятся, все норм, компилируется. Но при линковке самих функций не видно, то етсь Arduino.c не компилировался. В случае командной строки видимо можно указать принудительно Arduino.c для компиляции. Для vscode все жестко советуют держать исходники внутри проекта только, и видимо это работает. Но вне папок проекта Arduino.c не подключается к компиляции. То есть для каждой IDE нужно искать магичесую возможность как-то соотнести заголовки и соотв. исходники ?

Lester 11.05.2022 09:28

Якщо говорити про Code, то там є, наприклад, розширення platformio, яким я користуюся. Якщо platformio підтримує твій мікроконтролер, то раджу встановити його, все буде набагато зручніше і легше.

kovalev 17.05.2022 12:24

спасибо ответившим, закрывате тему. В общем, для себя решил что в качестве IDE юзать Eclipse, в сложных случаях Makе файлы наше все


Время на сервере: 16:55.

vBulletin 3, Copyright © 2000-2024, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co