busybox 크로스 컴파일하다 발생한 문제에 대한 질문 입니다.

hyper9의 이미지

PowerPC platform에서 사용할 ramdisk 를 만들기 시작했는데요.
첫번째 단계로 busybox를 Compile 하다가 발생한 문제입니다.

일단은 make menuconfig 한 후에, Build Options 라는 곳에서,
[ ] Do you want to build Busybox with a Cross compiler?
라는 곳에서 현재 설치되어 있는 PowerPC용 Compiler의 prefix를 입력해주었습니다.

저의 경우에는 /opt/ppc_prj/ppc85xx/usr/local/gcc-3.4.3-glibc-2.3.3-spe/powerpc-linux-gnuspe/bin/powerpc-linux-gnuspe-
라고 입력했습니다.

그리고 make clean ; make 를 실행했습니다.

결과는

/opt/ppc_prj/ppc85xx/usr/local/gcc-3.4.3-glibc-2.3.3-spe/powerpc-linux-gnuspe/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.3/../../../../powerpc-linux-gnuspe/bin/ld: cannot find -lcrypt
collect2: ld returned 1 exit status
make: *** [busybox] Error 1
[root@Fedora11 busybox-1.01]# 

라고 나오는데요, 이 Error 의 의미가 어떤 것일까요?
-l crypt 라고 나온 것을 보면 openssl library 를 못찾아서 그런걸까요?
조언 부탁드립니다.
미리 감사드립니다.

hyper9의 이미지

위의 문제를 어떻게 풀어볼까 고민을 하다가, Makefile 을 아래처럼 고쳐봤습니다.

아래는 원래의 Makefile입니다.

# In this section, we need .config
-include $(top_builddir)/.config.cmd
include $(patsubst %,%/Makefile.in, $(SRC_DIRS))
-include $(top_builddir)/.depend
 
busybox: $(ALL_MAKEFILES) .depend include/config.h $(libraries-y)
        $(CC) $(LDFLAGS) -o $@ -Wl,--start-group $(libraries-y) $(LIBRARIES) -Wl,--end-group
        $(STRIPCMD) $@
 
busybox.links: $(top_srcdir)/applets/busybox.mkll include/config.h $(top_srcdir)/include/applets.h
        - $(SHELL) $^ >$@
 
install: applets/install.sh busybox busybox.links
        $(SHELL) $< $(PREFIX)

아래는 수정한 Makefile 입니다.

# In this section, we need .config
-include $(top_builddir)/.config.cmd
include $(patsubst %,%/Makefile.in, $(SRC_DIRS))
-include $(top_builddir)/.depend
 
MY_ADD = -L/home/user1/ppc_prj/ppc85xx/usr/local/lib -lcrypt
 
busybox: $(ALL_MAKEFILES) .depend include/config.h $(libraries-y)
        $(CC) $(LDFLAGS) -o $@ -Wl,--start-group $(MY_ADD) $(libraries-y) $(LIBRARIES) -Wl,--end-group
        $(STRIPCMD) $@
 
busybox.links: $(top_srcdir)/applets/busybox.mkll include/config.h $(top_srcdir)/include/applets.h
        - $(SHELL) $^ >$@
 
install: applets/install.sh busybox busybox.links
        $(SHELL) $< $(PREFIX)

위와 같이 수정을 하고나니, 원래의 error는 없어졌지만, 새로운 error가 아래와 같이 나타났습니다.

/opt/ppc_prj/ppc85xx/usr/local/gcc-3.4.3-glibc-2.3.3-spe/powerpc-linux-gnuspe/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.3/../../../../powerpc-linux-gnuspe/bin/ld: cannot find -lc
collect2: ld returned 1 exit status
make: *** [busybox] Error 1
 
[root@Fedora 11 busybox-1.01]# 

그리고, Makefile 에서 추가한 /home/user1/ppc_prj/ppc85xx/usr/local/lib 아래에는
아래와 같은 library 들을 복사해 넣었습니다.

-rwxr-xr-x 1 root root  106189 2010-10-21 17:00 ld-2.3.3.so
lrwxrwxrwx 1 root root      11 2010-10-21 17:00 ld.so.1 -> ld-2.3.3.so
-rwxr-xr-x 1 root root 1398508 2010-10-25 15:29 libc-2.6.so
-rw-r--r-- 1 root root   13486 2010-10-21 17:04 libc_nonshared.a
-rwxr-xr-x 1 root root   28184 2010-10-21 15:57 libcrypt-2.3.3.so
lrwxrwxrwx 1 root root      13 2010-10-21 15:58 libcrypt.so -> libcrypt.so.1
lrwxrwxrwx 1 root root      17 2010-10-21 15:57 libcrypt.so.1 -> libcrypt-2.3.3.so
lrwxrwxrwx 1 root root      11 2010-10-25 15:30 libc.so.6 -> libc-2.6.so
lrwxrwxrwx 1 root root      13 2010-10-21 16:29 libgcc_s.so -> libgcc_s.so.1
-rw-r--r-- 1 root root   66055 2010-10-21 16:29 libgcc_s.so.1

결국에는 libcrypt.so 와 같은 library를 추가하고 그 경로를 Makefile에 추가한 셈인데요.
이렇게 접근하는 것이 맞을까요?

그리고 위에서와 같이 새롭게 발생한 error는 어떻게 접근하는 것이 좋을지요?
조언 부탁드립니다.
감사합니다.

hys545의 이미지

한번 libc-2.6.so를 libc.so로 링크해보세여
즐린

즐린

hyper9의 이미지

말씀해주신대로 libc-2.6.so를 libc.so로 link한 후에 다시 build 했더니
error의 내용이 바뀌었습니다.

아래에는 새로 발생한 error입니다.

/opt/ppc_prj/ppc85xx/usr/local/gcc-3.4.3-glibc-2.3.3-spe/powerpc-linux-gnuspe/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.3/../../../../powerpc-linux-gnuspe/bin/ld: warning: ld.so.1, needed by /opt/ppc_prj/ppc85xx/usr/local/lib/libc.so, not found (try using -rpath or -rpath-link)
/opt/ppc_prj/ppc85xx/usr/local/gcc-3.4.3-glibc-2.3.3-spe/powerpc-linux-gnuspe/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.3/../../../../powerpc-linux-gnuspe/lib/crt1.o(.rodata+0x8): undefined reference to `__libc_csu_init'
/opt/ppc_prj/ppc85xx/usr/local/gcc-3.4.3-glibc-2.3.3-spe/powerpc-linux-gnuspe/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.3/../../../../powerpc-linux-gnuspe/lib/crt1.o(.rodata+0xc): undefined reference to `__libc_csu_fini'
/home/user1/ppc_prj/busybox-1.01/coreutils/coreutils.a(cp.o)(.text+0x7a): In function `cp_main':
: undefined reference to `stat'
/home/user1/ppc_prj/busybox-1.01/coreutils/coreutils.a(cp.o)(.text+0x82): In function `cp_main':
: undefined reference to `stat'
/home/user1/ppc_prj/busybox-1.01/coreutils/coreutils.a(cp.o)(.text+0x8e): In function `cp_main':
: undefined reference to `lstat'
/home/user1/ppc_prj/busybox-1.01/coreutils/coreutils.a(cp.o)(.text+0x92): In function `cp_main':
: undefined reference to `lstat'
/home/user1/ppc_prj/busybox-1.01/coreutils/coreutils.a(install.o)(.text+0x1aa): In function `install_main':
: undefined reference to `lstat'
/home/user1/ppc_prj/busybox-1.01/coreutils/coreutils.a(install.o)(.text+0x1b2): In function `install_main':
: undefined reference to `lstat'
/home/user1/ppc_prj/busybox-1.01/editors/editors.a(sed.o)(.text+0x1958): In function `sed_main':
: undefined reference to `atexit'
/home/user1/ppc_prj/busybox-1.01/networking/udhcp/udhcp.a(pidfile.o)(.text+0xa8): In function `pidfile_acquire':
: undefined reference to `atexit'
/home/user1/ppc_prj/busybox-1.01/procps/procps.a(top.o)(.text+0x438): In function `top_main':
: undefined reference to `atexit'
/home/user1/ppc_prj/busybox-1.01/shell/shell.a(cmdedit.o)(.text+0x1a6c): In function `cmdedit_read_input':
: undefined reference to `atexit'
/home/user1/ppc_prj/busybox-1.01/util-linux/util-linux.a(more.o)(.text+0x120): In function `more_main':
: undefined reference to `atexit'
/home/user1/ppc_prj/busybox-1.01/coreutils/libcoreutils/libcoreutils.a(cp_mv_stat.o)(.text+0x8a): In function `cp_mv_stat':
: undefined reference to `stat'
/home/user1/ppc_prj/busybox-1.01/coreutils/libcoreutils/libcoreutils.a(cp_mv_stat.o)(.text+0x8e): In function `cp_mv_stat':
: undefined reference to `stat'
/opt/ppc_prj/ppc85xx/usr/local/lib/libc.so: undefined reference to `_rtld_global@GLIBC_PRIVATE'
/opt/ppc_prj/ppc85xx/usr/local/lib/libc.so: undefined reference to `__libc_enable_secure@GLIBC_PRIVATE'
/opt/ppc_prj/ppc85xx/usr/local/lib/libgcc_s.so: undefined reference to `__libc_stack_end@GLIBC_2.1'
/opt/ppc_prj/ppc85xx/usr/local/lib/libc.so: undefined reference to `_rtld_global_ro@GLIBC_PRIVATE'
/opt/ppc_prj/ppc85xx/usr/local/lib/libc.so: undefined reference to `__tls_get_addr@GLIBC_2.3'
/opt/ppc_prj/ppc85xx/usr/local/lib/libc.so: undefined reference to `_dl_argv@GLIBC_PRIVATE'
/opt/ppc_prj/ppc85xx/usr/local/lib/libc.so: undefined reference to `_dl_tls_get_addr_soft@GLIBC_PRIVATE'
collect2: ld returned 1 exit status
make: *** [busybox] Error 1
[root@Fedora 11 busybox-1.01]# 

이러한 경우는 어떻게 하면 좋을지 모르겠습니다.
조언을 다시 부탁드려보고 싶네요 ^^
감사합니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.