cross compile하기 위해 라이브러리를 포함시키거나 링크해줘야 하는데...

bakdorazi의 이미지

안녕하세요.
net-snmp-5.3.2를 크로스 컴파일 하려고 합니다.
fedora 11환경입니다.

아래는 크로스 컴파일을 위해 전임자가 남겨놓은 sh파일입니다.

./configure --host=i386-linux --build=ppc-linux --target=ppc-linux --prefix=/usr --exec-prefix=/usr --enable-shared --disable-debugging --enable-mini-agent --with-mibs="IP-MIB:IF-MIB:TCP-MIB:UDP-MIB:SNMPv2-MIB:RFC1213-MIB:NEXCOMM-FAN-MIB:NEXCOMM-LOG-MIB:NEXCOMM-SMI" --with-mib-modules="agentx ucd-snmp/dlmod nexlib/snmp_fan nexlib/snmp_log" --with-enterprise-notification-oid=.1.3.6.1.4.1.5927.99.12.1 --sysconfdir=/etc --localstatedir=/var --enable-internal-md5 --enable-snmpv1 --enable-snmpv2c --disable-embedded-perl --with-cc=ppc_82xx-gcc --with-linkcc=ppc_82xx-gcc --with-ar=ppc_82xx-ar --with-endianness=big --with-install-prefix=/home/psyche/sychoi/install --without-rpm | tee snmp.config.log
 
 
 
make | tee snmp.config.log
 
perl -pi -e "s|^prefix=/usr|prefix=/home/psyche/sychoi/install/usr|" net-snmp-config
 
perl -pi -e "s|^exec_prefix=/usr|exec_prefix=/home/psyche/sychoi/install/usr|" net-snmp-config
 
make install | tee snmp.intall.log

위의 설정은 틀린 곳이 없습니다..
단지 --with-mib-modules 이 부분이 private MIB 소스를 추가하는 부분인데
여기에 snmp_fan.c 와 snmp_log.c가 추가되어 있습니다.

--with-mib-modules ="nexlib/snmp_fan nexlib/snmp_log"

근데... 이 두 소스를 추가하기 위해서는 저희가 사용하는 라이브러리 파일(libnexcmd.a)과 헤더파일이 필요한데... 이 두 개를 어디다가 추가해 줘야 할지를 모르겠습니다.

라이브러리 패스는 /home/psyche/sychoi/lib/libnexcmd/libnexcmd.a
헤더파일 패스는 /home/psyche/sychoi/include
입니다.

참고로 위의 snmp_fan.c 와 snmp_log.c 파일을 포함하여 agentx로 만들려고 전임자가 만들어둔 Makefile이 있습니다.

거기에는 LIBS와 CFLAG에 저희 라이브러리와 헤더파일이 사용되었습니다.

PROJDIR = /home/psyche/sychoi
INSTDIR = $(PROJDIR)/rootfs/usr/sbin
SNMPINC = /home/psyche/sychoi/install/usr
CC=ppc_82xx-gcc
STRIP=ppc_82xx-strip
 
OBJS += agentx.o
OBJS += snmp_fan.o
OBJS += snmp_log.o
#OBJS += exam.o
 
TARGETS = agentx
 
LIBS=$(PROJDIR)/lib/libnexcmd/libnexcmd.a -lpthread
 
CFLAGS = -I. -I$(PROJDIR)/include/libnexcmd -I$(PROJDIR)/include
CFLAGS+= -O2 -Dlinux -I. -I$(SNMPINC)/include
#CFLAGS =  -Dlinux -I. -I$(SNMPINC)/include
BUILDLIBS = -L$(SNMPINC)/lib -lnetsnmp -lcrypto -lm
BUILDAGENTLIBS = -L$(SNMPINC)/lib -lnetsnmpmibs -lnetsnmpagent -lnetsnmphelpers -lnetsnmp -ldl -lcrypto -lm 
 
# shared library flags (assumes gcc)
DLFLAGS=-fPIC -shared -lpthread
 
all: $(TARGETS)
 
agentx: $(OBJS)
        $(CC) -o agentx $(OBJS) $(LIBS) $(BUILDLIBS) $(BUILDAGENTLIBS)
#       $(CC) -o agentx $(OBJS) $(BUILDLIBS) $(BUILDAGENTLIBS)
        $(STRIP) agentx
 
install:
        cp -a agentx $(INSTDIR)
 
clean:
        rm -f $(OBJS) $(TARGETS)

제가 초보다 보니... 그리고 크로스컴파일을 처음 하다 보니... 너무 모르는 것이 많네요...

모쪼록 개념없는 질문이라고 생각하지 마시고... 질책성이라도 좋으니 답글 부탁드립니다...

bushi의 이미지

꼼수엔 꼼수로 대응을...

CFLAGS="-I/home/psyche/sychoi/include" LDFLAGS="-L/home/psyche/sychoi/lib/libnexcmd -lnexcmd" ./configure ...

static 라이브러리는 나열 순서에 대단히 민감합니다.
심볼을 찾을 수 없다는 에러가 나온다면 Makefile* 을 직접 수정하시거나 libnexcmd 를 shared 라이브러리로 만드는 방법 밖에 없습니다.

+

몇 년 전에 어느 사이트에 올린 arm cross compile 용 스크립트를 수정해 사용하시는 것 같아 댓글달았습니다.
원본 약간 수정해서 첨부합니다.

OTL

댓글 첨부 파일: 
첨부파일 크기
Plain text icon build_snmp.sh_.txt3.85 KB
bakdorazi의 이미지

자료 첨부해 주신것 보기도 전에 댓글부터 달고 싶어지는 군요...
너무 감사해서... ...울것 같습니다...
생짜 초보니 이해해 주시기 바랍니다...
첨부해 주신 자료 열심히 분석해 보고... 다시 답글 달겠습니다...
웬지 잘될것 같은 느낌입니다...
ㅋㅋ.
잘될것 같습니다...^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.