Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.01.2018, 16:50   #1
sana555
Senior Member
 
Регистрация: 22.09.2017
Сообщений: 338
Вес репутации: 441
sana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to behold
По умолчанию Создание Makefile для стороннего пакета от простого к сложному

Решил начать знакомство с Makefile, с простого примера по созданию стороннего пакета в lede: https://istarik.ru/blog/openwrt/49.html
Создал директорию: /home/sana/source/package/kernel/test, в ней папку src и файл Makefile с содержимым:
Код:
#=====================================
# test Makefile
#=====================================

include $(TOPDIR)/rules.mk

PKG_NAME:=test
PKG_VERSION:=1
PKG_RELEASE:=1

PKG_BUILD_DIR:= $(BUILD_DIR)/$(PKG_NAME)

include $(INCLUDE_DIR)/package.mk

define Package/test
  SECTION:=kernel
  CATEGORY:=Kernel modules
  SUBMENU:=Wireless Drivers
  TITLE:=test - ddddddddddddddddddddddddddddddd
endef

define Package/test/description
	test - ddddddddddddddddddddddddddddddd
endef

define Build/Prepare
	mkdir -p $(PKG_BUILD_DIR)
	$(CP) ./src/* $(PKG_BUILD_DIR)/
endef

define Build/Compile
	$(TARGET_CC) $(TARGET_CFLAGS) -c -o $(PKG_BUILD_DIR)/hello.o $(PKG_BUILD_DIR)/hello.c
	$(TARGET_CC) $(TARGET_LDFLAGS) -o $(PKG_BUILD_DIR)/test $(PKG_BUILD_DIR)/hello.o
endef

define Package/test/install
	$(INSTALL_DIR) $(1)/bin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/test $(1)/bin/
endef

$(eval $(call BuildPackage,test))
В папку src, положил файл hello.с с содержимым:
Код:
#include <stdio.h>

int main (void)
{
  printf("Hello world, i'm cool hacker!\n");
  return 0;
В make menuconfig пункт меню появился(хоть это радует...), выбрал его и выполнил:
make package/test/compile V=s
На что получил ответ:
Код:
sana@sana ~/source $ make package/test/compile V=s
make[1]: Entering directory '/home/sana/source'
make[2]: Entering directory '/home/sana/source/package/libs/toolchain'
if [ -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean ]; then rm -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean; fi
echo "libc" >> /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install
if [ -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean ]; then rm -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean; fi
echo "libgcc" >> /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install
if [ -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean ]; then rm -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean; fi
if [ -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean ]; then rm -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean; fi
if [ -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean ]; then rm -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean; fi
if [ -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean ]; then rm -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean; fi
echo "libpthread" >> /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install
if [ -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean ]; then rm -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean; fi
if [ -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean ]; then rm -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean; fi
echo "librt" >> /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install
if [ -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean ]; then rm -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean; fi
if [ -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean ]; then rm -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean; fi
if [ -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean ]; then rm -f /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install /home/sana/source/staging_dir/target-arm_cortex-a9_musl-1.1.16_eabi/pkginfo/toolchain.default.install.clean; fi
make[2]: Leaving directory '/home/sana/source/package/libs/toolchain'
make[2]: Entering directory '/home/sana/source/package/kernel/test'
arm-openwrt-linux-muslgnueabi-gcc -Os -pipe -mcpu=cortex-a9 -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -mfloat-abi=soft -iremap /home/sana/source/build_dir/target-arm_cortex-a9_musl-1.1.16_eabi/test:test -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -c -o /home/sana/source/build_dir/target-arm_cortex-a9_musl-1.1.16_eabi/test/hello.o /home/sana/source/build_dir/target-arm_cortex-a9_musl-1.1.16_eabi/test/hello.c
/home/sana/source/build_dir/target-arm_cortex-a9_musl-1.1.16_eabi/test/hello.c: In function 'main':
/home/sana/source/build_dir/target-arm_cortex-a9_musl-1.1.16_eabi/test/hello.c:6:3: error: expected declaration or statement at end of input
   return 0;
   ^
Makefile:41: recipe for target '/home/sana/source/build_dir/target-arm_cortex-a9_musl-1.1.16_eabi/test/.built' failed
make[2]: *** [/home/sana/source/build_dir/target-arm_cortex-a9_musl-1.1.16_eabi/test/.built] Error 1
make[2]: Leaving directory '/home/sana/source/package/kernel/test'
package/Makefile:105: recipe for target 'package/kernel/test/compile' failed
make[1]: *** [package/kernel/test/compile] Error 2
make[1]: Leaving directory '/home/sana/source'
/home/sana/source/include/toplevel.mk:198: ошибка выполнения рецепта для цели «package/test/compile»
make: *** [package/test/compile] Ошибка 2
Так же пробовал команду make -j3 V=1, тоже ошибка... Что нужно подправить?

Последний раз редактировалось sana555; 30.01.2018 в 16:54.
sana555 вне форума   Ответить с цитированием
Старый 30.01.2018, 18:12   #2
sunny
Senior Member
 
Аватар для sunny
 
Регистрация: 22.10.2015
Адрес: Там где сосны и песок
Сообщений: 1,534
Вес репутации: 1600
sunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to all
По умолчанию

Очевидная разница - makefile для раздела "Утилиты" в представленном здесь примере: https://istarik.ru/blog/openwrt/49.html отличается от makefile модуля ядра.
Сборка модуля ядра описана здесь:
http://h-wrt.com/ru/mini-how-to/autotoolsSimpleModule
Цитата:
Алгоритм сборки модуля ядра с помощью autotools, немного отличается от алгоритма сборки простой программы или библиотеки. Потребуется создать еще два дополнительных Makefile.
__________________
Читаю ваши мысли по аватару ...

Последний раз редактировалось sunny; 30.01.2018 в 18:15.
sunny вне форума   Ответить с цитированием
Старый 30.01.2018, 18:20   #3
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1030
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию

В hello.c кажется нет закрывающей скобки }

ИМХО дилетанта:
sunny, там компилятор явно ругается:
hello.c:6:3: error: expected declaration or statement at end of input
А секция define Package/test указывает в каком месте menuconfig этот пакет светится будет.

(дяденька, я не настоящий программист, я листинг кодов в корзине нашел)

Последний раз редактировалось Tohin; 30.01.2018 в 18:23.
Tohin вне форума   Ответить с цитированием
Старый 30.01.2018, 18:46   #4
sana555
Senior Member
 
Регистрация: 22.09.2017
Сообщений: 338
Вес репутации: 441
sana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to behold
По умолчанию

Цитата:
Сообщение от sunny Посмотреть сообщение
Сборка модуля ядра описана здесь:
http://h-wrt.com/ru/mini-how-to/autotoolsSimpleModule
Я был по этой ссылке, все делал как там и у меня получилось на представленном там примере, но как я понял, поскольку Makefile создается автоматически, то прописать его, чтобы он отобразился в menuconfig нет возможности...

Цитата:
В hello.c кажется нет закрывающей скобки }
О да, все скомпилировалось без проблем, спасибо, буду дальше экспериментировать.

Последний раз редактировалось sana555; 30.01.2018 в 18:48.
sana555 вне форума   Ответить с цитированием
Старый 31.01.2018, 00:33   #5
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1310
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

Цитата:
буду дальше экспериментировать
Если Вы решили писать модуль ядра, то рекомендую почитать это.

Небольшая выдержка...

Модуль ядра Linux — это скомпилированный двоичный код, который вставляется непосредственно в ядро Linux, работая в кольце 0, внутреннем и наименее защищённом кольце выполнения команд в процессоре x86–64. Здесь код исполняется совершенно без всяких проверок...

Написание модуля ядра Linux — занятие не для слабонервных. Изменяя ядро, вы рискуете потерять данные. В коде ядра нет стандартной защиты, как в обычных приложениях Linux. Если сделать ошибку, то повесите всю систему...

Это я к тому, что Вы в трёх строчках допустили банальную ошибку.
__________________
istarik.ru
stD вне форума   Ответить с цитированием
Старый 31.01.2018, 00:50   #6
sana555
Senior Member
 
Регистрация: 22.09.2017
Сообщений: 338
Вес репутации: 441
sana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to behold
По умолчанию

Цитата:
Сообщение от sana555 Посмотреть сообщение
Я был по этой ссылке
Ан нет, поторопил лошадей, перепутал с другой ссылкой, которую вы мне давали: http://h-wrt.com/ru/mini-how-to/autotoolsSimpleProject
Во всех примерах, которые мне удалось посмотреть, рассматривается ситуация, когда файлы находятся непосредственно в папке src, а у меня файлы находятся в:
src\wl\sys
src\shared
src\shared\bcmwifi\include
src\include
src\include\bcmcrypto
src\common\include\proto
А, именно, в папке src, кроме вышеперечисленных папок больше нет никаких файлов...

Исходя из этого:
Цитата:
Также нужно создать Makefile.am в директории src следующего содержания:

Код:
# src/Makefile.am

EXTRA_PROGRAMS = automake_dummy 
automake_dummy_SOURCES = module_hello.c 
module_DATA = module_hello.o 
include ../Makefile.common
Получается мне нужно создавать Makefile.am, в каждой из перечисленной мной директории? Или только в тех директориях, где есть файлы с расширением ? Файлы с расширением .c, располагаются в папках:
src\wl\sys\wl_cfg80211_hybrid.c
src\wl\sys\wl_iw.c
src\wl\sys\wl_linux.c
src\shared\linux_osl.c
Остальные файлы в этих и других папках, с расширением .h

Последний раз редактировалось sana555; 31.01.2018 в 01:10.
sana555 вне форума   Ответить с цитированием
Старый 31.01.2018, 01:05   #7
sana555
Senior Member
 
Регистрация: 22.09.2017
Сообщений: 338
Вес репутации: 441
sana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to behold
По умолчанию

Цитата:
Сообщение от stD Посмотреть сообщение
Это я к тому, что Вы в трёх строчках допустили банальную ошибку.
. Мало того, это еще не я написал, а просто скопировал готовый пример, без закрывающей скобки. А если б сам что нибудь на придумывал, там точно черт ногу сломит... Я думал, чтобы подцепить сторонний драйвер нужно только научиться составить правильный Makefile, а тут на тебе такие страсти.. Даже и не знаю что мне делать, все же хочется на новом роутере, родной работающий wi-fi...
sana555 вне форума   Ответить с цитированием
Старый 31.01.2018, 08:23   #8
sana555
Senior Member
 
Регистрация: 22.09.2017
Сообщений: 338
Вес репутации: 441
sana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to behold
По умолчанию

Все же решил продолжать, чем черт не шутит, авось с вашей, да божьей помощью что нибудь на ковыряю. Особо не переживаю, рабочий роутер есть, этот можно подвергнуть испытаниям..

Развернуть для просмотра

Усложнил задачу, из этого примера:http://h-wrt.com/ru/mini-how-to/autotoolsSimpleProject решил сделать в ручную, там идет три файла:
Цитата:
3. В src создадим файл main.c

Код:
/* src/main.c */
#include "main.h"

int main (void) {
   test ();
   return 0;
}
4. В src создадим файл test.c

Код:
/* src/test.c */
#include "main.h"

void test (void){
   printf("i am test!\n");
}
5. В src создадим файл main.h

Код:
/* src/main.h */
#include <stdio.h>

extern void test (void);
Makefile получился такой:
Код:
#=====================================
# test1 Makefile
#=====================================

include $(TOPDIR)/rules.mk

PKG_NAME:=test1
PKG_VERSION:=1
PKG_RELEASE:=1

PKG_BUILD_DIR:= $(BUILD_DIR)/$(PKG_NAME)

include $(INCLUDE_DIR)/package.mk

define Package/test1
  SECTION:=kernel
  CATEGORY:=Kernel modules
  SUBMENU:=Wireless Drivers
  TITLE:=test1 - ddddddddddddddddddddddddddddddd
endef

define Package/test1/description
	test1 - ddddddddddddddddddddddddddddddd
endef

define Build/Prepare
	mkdir -p $(PKG_BUILD_DIR)
	$(CP) ./src/* $(PKG_BUILD_DIR)/
endef

#Изменения коснулись только этой части, в данном случае в папке src два файла с расширением .c, поэтому запись увеличится на одну строку. Я так понимаю, что файлы с расширением .h мы вообще не трогаем и никуда не вписываем...
define Build/Compile
	$(TARGET_CC) $(TARGET_CFLAGS) -c -o $(PKG_BUILD_DIR)/main.o $(PKG_BUILD_DIR)/main.c	
	$(TARGET_CC) $(TARGET_CFLAGS) -c -o $(PKG_BUILD_DIR)/test.o $(PKG_BUILD_DIR)/test.c
#А эта строчка немного изменится
	$(TARGET_CC) $(TARGET_LDFLAGS) -o $(PKG_BUILD_DIR)/test1 $(PKG_BUILD_DIR)/main.o $(PKG_BUILD_DIR)/test.o
endef

define Package/test1/install
	$(INSTALL_DIR) $(1)/bin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/test1 $(1)/bin/
endef

$(eval $(call BuildPackage,test1))
[свернуть]

В итоге пакет скомпилировался без ошибок. Канэчно, особых изменений не произошло, но тем не менее, я доволен...
Можете прокомментировать эти строки, что здесь происходит?
Код:
define Build/Compile
	$(TARGET_CC) $(TARGET_CFLAGS) -c -o $(PKG_BUILD_DIR)/main.o $(PKG_BUILD_DIR)/main.c	
	$(TARGET_CC) $(TARGET_CFLAGS) -c -o $(PKG_BUILD_DIR)/test.o $(PKG_BUILD_DIR)/test.c
	$(TARGET_CC) $(TARGET_LDFLAGS) -o $(PKG_BUILD_DIR)/test1 $(PKG_BUILD_DIR)/main.o $(PKG_BUILD_DIR)/test.o
endef
sana555 вне форума   Ответить с цитированием
Старый 31.01.2018, 14:59   #9
sunny
Senior Member
 
Аватар для sunny
 
Регистрация: 22.10.2015
Адрес: Там где сосны и песок
Сообщений: 1,534
Вес репутации: 1600
sunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to all
По умолчанию

Цитата:
Все же решил продолжать, чем черт не шутит, авось с вашей, да божьей помощью что нибудь на ковыряю.
Все верно, даже неудачный опыт - это прежде всего опыт, а опыт ценится..
Как минимум самостоятельная сборка приложений будет очень полезна.
__________________
Читаю ваши мысли по аватару ...
sunny вне форума   Ответить с цитированием
Старый 31.01.2018, 15:32   #10
sana555
Senior Member
 
Регистрация: 22.09.2017
Сообщений: 338
Вес репутации: 441
sana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to beholdsana555 is a splendid one to behold
По умолчанию

Решил снова собрать пакет с помощью автоутилит, по этому мануалу:http://h-wrt.com/ru/mini-how-to/autotoolsSimpleProject Вчера все собрал, сегодня затык в первой же команде(проверил все файлы, вроде бы код везде правильный):
Код:
sana@sana ~/test $ autoscan
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE [^\}]*}/ at /usr/bin/autoscan line 361.
Дальше команда aclocal, тоже ошибка, но вроде файлы создает...
Код:
sana@sana ~/test $ aclocal
aclocal: warning: autoconf input should be named 'configure.ac', not 'configure.in'
Далее без ошибок:
Код:
sana@sana ~/test $ autoconf
sana@sana ~/test $ autoheader
sana@sana ~/test $ touch NEWS README AUTHORS ChangeLog
А здесь повторяется предыдущая ошибка, оно и понятно я расширение то не поменял... Файлы все равно создаются...
Код:
sana@sana ~/test $ automake --add-missing
automake: warning: autoconf input should be named 'configure.ac', not 'configure.in'
configure.in:12: installing './compile'
configure.in:9: installing './install-sh'
configure.in:9: installing './missing'
Makefile.am: installing './INSTALL'
Makefile.am: installing './COPYING' using GNU General Public License v3 file
Makefile.am:     Consider adding the COPYING file to the version control system
Makefile.am:     for your code, to avoid questions about which license your project uses
src/Makefile.am: installing './depcomp'
automake: warning: autoconf input should be named 'configure.ac', not 'configure.in'
Началось самое интересное:
Код:
sana@sana ~/test $ configure
configure: команда не найдена
Вообще то данный скрипт создался в директории, но почему то пишет что команда не найдена...
Латна, пошел пешком в директорию и вручную запустил скрипт configure, и о чудо, Makefile -ы создались в директории /test и /test/src.
Пробую собрать:
Код:
sana@sana ~/test $ make
make  all-recursive
make[1]: вход в каталог «/home/sana/test»
Making all in src
make[2]: вход в каталог «/home/sana/test/src»
gcc -DHAVE_CONFIG_H -I. -I..     -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
mv -f .deps/main.Tpo .deps/main.Po
gcc -DHAVE_CONFIG_H -I. -I..     -g -O2 -MT test.o -MD -MP -MF .deps/test.Tpo -c -o test.o test.c
mv -f .deps/test.Tpo .deps/test.Po
gcc  -g -O2   -o hello main.o test.o  
make[2]: выход из каталога «/home/sana/test/src»
make[2]: вход в каталог «/home/sana/test»
make[2]: выход из каталога «/home/sana/test»
make[1]: выход из каталога «/home/sana/test»
Вроде норм, скомпилировалось в директорию /test/src/hello , проверяю:
Код:
sana@sana ~/test $ src/hello
i am test!
Работает...
Только не понятно, получается выше ошибки были не критичные?

Последний раз редактировалось sana555; 31.01.2018 в 15:59.
sana555 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 22:13. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика