Решено: Make: сборка библиотеки

Модератор: Модераторы разделов

IMB
Сообщения: 2567
ОС: Debian

Решено: Make: сборка библиотеки

Сообщение IMB »

Доброго дня!
Makefile

Код: Выделить всё

ROOTDIR = ../../../../..
TARGET = xdm_2a_lib

REL_LIB = $(TARGET).a


include $(ROOTDIR)/Rules.make

XDC_PATH = $(CODEC_INSTALL_DIR)/packages;$(CE_INSTALL_DIR)/packages;$(LINK_INSTALL_DIR)/packages;$(XDAIS_INSTALL_DIR)/packages;$(CMEM_INSTALL_DIR)/packages

INCLUDES += -I $(LINUXKERNEL_INSTALL_DIR)/include -I./

CC = $(MVTOOL_PREFIX)gcc $(INCLUDES) $(C_FLAGS) -c
AR = $(MVTOOL_PREFIX)ar

C_FLAGS += -Wall -g
#C_FLAGS += -DAEW_CHECK_TIME_INTERVAL
AR_FLAGS += -r

SOURCES = $(wildcard *.c)
HEADERS = $(wildcard *.h)

REL_OBJ = $(SOURCES:%.c=%.o)

all:    $(REL_LIB)

$(REL_LIB): $(REL_OBJ) $(HEADERS)
        $(AR) $(AR_FLAGS) $(REL_LIB) $(REL_OBJ)

clean::
        -rm -rf $(REL_OBJ)

ls

ae_appro.h iae.h ialg.h Makefile xdas.h xdm.h awb_appro.h iaewb.h iawb.h std.h xdm_2a_lib.a

xdm_2a_lib.a

$ file xdm_2a_lib.a xdm_2a_lib.a: current ar archive $ ar t xdm_2a_lib.a ae_ti.o awb_ti.o ae_appro.o awb_appro.o

Откуда берутся объектные файлы в данном случае?
Спасибо.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Решено: Make: сборка библиотеки

Сообщение watashiwa_daredeska »

IMB писал(а):
25.05.2010 10:26
Откуда берутся объектные файлы?
make -p -f /dev/null
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Решено: Make: сборка библиотеки

Сообщение IMB »

Это намёк на то, что объектные файлы получают из, например, C-файлов или интересует вывод указаной команды?
Если первое, то я специально привёл содержимое директории.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Решено: Make: сборка библиотеки

Сообщение sash-kan »

IMB писал(а):
25.05.2010 10:26
Откуда берутся объектные файлы в данном случае?

в каком смысле «откуда»?
из каких файлов? из файлов с суффиксом «.c»
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Решено: Make: сборка библиотеки

Сообщение sash-kan »

или непонятно, каким образом make догадывается, _как_ из *.c получить *.o?
прочитайте хотя бы это для начала:
$ info make 'make Deduces'

upd. да и вообще info make — весьма полезный для освоения программистом документ.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Решено: Make: сборка библиотеки

Сообщение IMB »

sash-kan писал(а):
25.05.2010 11:55
IMB писал(а):
25.05.2010 10:26
Откуда берутся объектные файлы в данном случае?

в каком смысле «откуда»?
из каких файлов? из файлов с суффиксом «.c»

Хорошо, из каких C-файлов если в данной директории их нет?
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: Решено: Make: сборка библиотеки

Сообщение deadhead »

IMB писал(а):
25.05.2010 12:07
Хорошо, из каких C-файлов если в данной директории их нет?

Может быть из этих

Код: Выделить всё

include $(ROOTDIR)/Rules.make
[x] close
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Решено: Make: сборка библиотеки

Сообщение IMB »

Нет. Rules.make содержит только определение общих переменных, такие как CODEC_INSTALL_DIR, CE_INSTALL_DIR и т.д.
Полный листинг директории с исходниками

Код: Выделить всё

$ ls -FR .
.:
aew.h*               ctrl.c*             font_util.c*      NoiseFiltStr.h*  ti_fd/
aew_xdm/             ctrl.h*             font_util.h*      NoiseFiltThr.h*  TI_Logo_160_54.c*
appro_aew.c*         display.c*          gamma1.txt*       ptz.c*           TI_Logo_76_26.c*
appro_aew.c.bak*     display.h*          gamma2.txt*       ptz.h*           ti_nf/
appro_aew.h*         dm355_h3a.c*        ijpegenc.h*       ring_buffer.h*   ti_osd/
ascii_1540_40.c*     dm355_h3a.c.bak*    image_tool/       simplewidget/    ti_vs/
ascii_924_20.c*      dm355_h3a.h*        imp4venc.h*       speech.c*        ui.c*
audioplay.c*         encode.h*           main.c*           speech.h*        ui.h*
audioplay.h*         encode_stream.cfg*  main.c.bak*       stream/          video1.c*
capture.c*           encode_stream.txt*  Makefile*         swosdThr.c*      video.h*
capture.h*           face_detect.c*      motion_detect.c*  swosdThr.h*      writer.c*
ccdc_mt9p031.h*      face_detect.h*      motion_detect.h*  ti_2a/           writer.h*
ccdc_mt9p031.h.bak*  font_maker/         nf_table/         ti_aew.c*

./aew_xdm:
Appro_aew_cal.h*      Appro_aew_xdm.a*      Appro_aew_xdm.h*
Appro_aew_control.a*  Appro_aew_xdm.c*      Makefile*
Appro_aew_control.h*  Appro_aew_xdm.c.bak*  xdm_2a_lib/

./aew_xdm/xdm_2a_lib:
ae_appro.h*   iae.h*    ialg.h*  Makefile*  xdas.h*        xdm.h*
awb_appro.h*  iaewb.h*  iawb.h*  std.h*     xdm_2a_lib.a*

./font_maker:
font_maker.c*  font_maker.h*  Makefile*

./image_tool:
ae_setup.c*   cmd_util.c*     image_setting.c*  image_tool.h*  inifile.h*   shm_util.h*
awb_setup.c*  cmd_util.h*     image_setting.h*  image_util.a*  Makefile*
cmd_def.h*    dm355_setup.c*  image_tool.c*     inifile.c*     shm_util.c*

./nf_table:
nsf_str_table_IPNC_3MP.txt*        nsf_thr_table_IPNC_3MP.txt*
nsf_str_table_ISO3200_normal.txt*  nsf_thr_table_ISO3200_normal.txt*
nsf_str_table_ISO400_normal.txt*   nsf_thr_table_ISO400_normal.txt*

./simplewidget:
font.c*      gfx.c*    Makefile*         _simplescreen.h*  simplewidgetd.a*
font_ext.h*  _gfx.h*   png.c*            _simpletext.h*    simplewidget.doxygen*
_font.h*     jpeg.c*   _png.h*           simplewidget.a*   simplewidget.h*
freetype2/   _jpeg.h*  _simplebutton.h*  simplewidget.c*   _types.h*

./simplewidget/freetype2:
freetype/

./simplewidget/freetype2/freetype:
cache/       ftchapters.h*  ftincrem.h*  ftmoderr.h*  ftstroke.h*  fttypes.h*   tttables.h*
config/      fterrdef.h*    ftlist.h*    ftoutln.h*   ftsynth.h*   ftwinfnt.h*  tttags.h*
freetype.h*  fterrors.h*    ftlzw.h*     ftpfr.h*     ftsysio.h*   ftxf86.h*    ttunpat.h*
ftbbox.h*    ftglyph.h*     ftmac.h*     ftrender.h*  ftsysmem.h*  internal/
ftbdf.h*     ftgzip.h*      ftmm.h*      ftsizes.h*   ftsystem.h*  t1tables.h*
ftcache.h*   ftimage.h*     ftmodapi.h*  ftsnames.h*  fttrigon.h*  ttnameid.h*

./simplewidget/freetype2/freetype/cache:
ftccache.h*  ftccmap.h*  ftcglyph.h*  ftcimage.h*  ftcmanag.h*  ftcmru.h*  ftcsbits.h*

./simplewidget/freetype2/freetype/config:
ftconfig.h*  ftheader.h*  ftmodule.h*  ftoption.h*  ftstdlib.h*

./simplewidget/freetype2/freetype/internal:
autohint.h*  ftmemory.h*  fttrace.h*   sfnt.h*      svpostnm.h*  svwinfnt.h*
ftcalc.h*    ftobjs.h*    internal.h*  svbdf.h*     svpscmap.h*  svxf86nm.h*
ftdebug.h*   ftrfork.h*   pcftypes.h*  svgldict.h*  svpsinfo.h*  t1types.h*
ftdriver.h*  ftserv.h*    psaux.h*     svmm.h*      svsfnt.h*    tttypes.h*
ftgloadr.h*  ftstream.h*  pshints.h*   svpfr.h*     svttcmap.h*

./stream:
cache_mng.c*  gop_lock.c*  Makefile*   mem_mng.h*         semaphore_util.h*  stream.c.bak*
cache_mng.h*  gop_lock.h*  mem_mng.c*  semaphore_util.c*  stream.c*          stream.h*

./ti_2a:
ae_ti.h*  awb_ti.h*  iae.h*  iaewb.h*  iawb.h*  libti_2a.a*

./ti_fd:
eOkaoCom.a*  eOkaoDt.a*  eOkaoEo.a*  eOkaoFr.a*  eOkaoPt.a*  eOkaoSmile.a*  libfdetect_ti.a*

./ti_nf:

./ti_osd:
libosd_ti.a*  sw_osd.h*

./ti_vs:
alg.h*  ivs1.h*  libvstab_ti.a*  tistdtypes.h*  vs_ti.h*
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Решено: Make: сборка библиотеки

Сообщение sash-kan »

ну, проинспектируйте все переменные. типа так:

Код: Выделить всё

inspect:
  echo $(REL_LIB)
  echo $(REL_OBJ)
  echo $(HEADERS)
  echo $(AR)
  echo $(AR_FLAGS)
  echo $(REL_LIB)
  echo $(REL_OBJ)
  echo $(SOURCES)
$ make inspect
(перед echo — табы)

IMB писал(а):
25.05.2010 12:15
Rules.make содержит только определение общих переменных, такие как CODEC_INSTALL_DIR, CE_INSTALL_DIR и т.д.
покажите для разнообразия.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Решено: Make: сборка библиотеки

Сообщение watashiwa_daredeska »

IMB писал(а):
25.05.2010 12:15
Полный листинг директории с исходниками
Если это точно каталог с исходниками, а не «грязный» каталог после экспериментов со сборкой, то это значит, что все эти *.a собраны вендором и поставляются в бинарном виде без исходников.
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Решено: Make: сборка библиотеки

Сообщение IMB »

watashiwa_daredeska, Вы меня слегка опередили. Чуток покумекав и пообщавшись с коллегами я пришёл к аналогичному выводу.
Объясню почему меня так заинтересовало сборка *.a. Представленный каталог действительно является примером от производителя на основе которого нам рекомендовали изучить управление закрытым модулем. Мы приделали управление этим модулем, но результат его работы нас не устраивает. Было внесено ряд правок в исходники, но после сборки ничего не поменялось. Я решил пересобрать библиотеки и наткнулся на этот вопрос.
Всем спасибо, похоже вопрос можно считать закрытым.
Спасибо сказали: