busybox 1.27.2 cross compile

lux1075의 이미지

안녕하세요~

busybox를 크로스컴파일 하는데 어려움이 있어, 고수님들의 노하우를 알고자 질문합니다.

busybox 1.27.2는 (https://www.busybox.net/) 에서 직접 다운로드를 하였고,

Host PC에는 Ubuntu 16.04.3 LTS server 가 설치되어 있습니다.
더불어 크로스컴파일러는 sudo apt-get install gcc-4.9-arm-linux-gnueabi 를 하여 설치가 되었습니다.
(*크로스컴파일러 설치 경로 : /usr/bin/)
(*ls /usr/bin 결과)
....
arm-linux-gnueabi-addr2line
arm-linux-gnueabi-ar
arm-linux-gnueabi-as
arm-linux-gnueabi-c++filt
arm-linux-gnueabi-cpp -> arm-linux-gnueabi-cpp-5
arm-linux-gnueabi-cpp-4.9
arm-linux-gnueabi-cpp-5
arm-linux-gnueabi-dwp
arm-linux-gnueabi-elfedit
arm-linux-gnueabi-gcc-4.9
arm-linux-gnueabi-gcc-ar-4.9
arm-linux-gnueabi-gcc-nm-4.9
arm-linux-gnueabi-gcc-ranlib-4.9
arm-linux-gnueabi-gcov-4.9
arm-linux-gnueabi-gprof
arm-linux-gnueabi-ld -> arm-linux-gnueabi-ld.bfd
arm-linux-gnueabi-ld.bfd
arm-linux-gnueabi-ld.gold
arm-linux-gnueabi-nm
arm-linux-gnueabi-objcopy
arm-linux-gnueabi-objdump
arm-linux-gnueabi-ranlib
arm-linux-gnueabi-readelf
arm-linux-gnueabi-size
arm-linux-gnueabi-strings
arm-linux-gnueabi-strip
....

이후 Busybox 디렉토리에서 Makefile을 수정하였습니다.

....
288
289 # Make variables (CC, etc...)
290
291 AS = $(CROSS_COMPILE)as
292 #CC = $(CROSS_COMPILE)gcc
293 CC = $(CROSS_COMPILE)gcc-4.9
294 LD = $(CC) -nostdlib
295 #LD = $(CROSS_COMPILE)ld
296 CPP = $(CC) -E
297 #AR = $(CROSS_COMPILE)ar
298 #NM = $(CROSS_COMPILE)nm
299 AR = $(CROSS_COMPILE)gcc-ar-4.9
300 NM = $(CROSS_COMPILE)gcc-nm-4.9
301 STRIP = $(CROSS_COMPILE)strip
302 OBJCOPY = $(CROSS_COMPILE)objcopy
303 OBJDUMP = $(CROSS_COMPILE)objdump
304 PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config
305 AWK = awk
306 GENKSYMS = scripts/genksyms/genksyms
307 DEPMOD = /sbin/depmod
308 KALLSYMS = scripts/kallsyms
309 PERL = perl
310 CHECK = sparse
311
....

이제 "make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm" 를 실행하였는데 완료되지 못하고 중간에 에러가 발생합니다. 아래는 컴파일 과정 일부분 입니다.

CC ......
CC util-linux/volume_id/util.o
CC util-linux/volume_id/volume_id.o
CC util-linux/volume_id/xfs.o
AR util-linux/volume_id/lib.a
LINK busybox_unstripped
Your linker does not support --sort-section,alignment
Your linker does not support --sort-common
Your linker does not support -Wl,--gc-sections
Trying libraries: m
Failed: -Wl,--start-group -lm -Wl,--end-group
Output of:
arm-linux-gnueabi-gcc-4.9 -Wall -Wshadow -Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter -Wunused-function -Wunused-value -Wmissing-prototypes -Wmissing-declarations -Wno-format-security -Wdeclaration-after-statement -Wold-style-definition -fno-builtin-strlen -finline-limit=0 -fomit-frame-pointer -ffunction-sections -fdata-sections -fno-guess-branch-probability -funsigned-char -static-libgcc -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-builtin-printf -Os -o busybox_unstripped -Wl,--start-group applets/built-in.o archival/lib.a archival/libarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a mailutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a printutils/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a util-linux/volume_id/lib.a archival/built-in.o archival/libarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o mailutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o printutils/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o util-linux/volume_id/built-in.o -Wl,--end-group -Wl,--start-group -lm -Wl,--end-group
==========
coreutils/lib.a(mktemp.o): In function `mktemp_main':
mktemp.c:(.text.mktemp_main+0xa8): warning: the use of `mktemp' is dangerous, better use `mkstemp' or `mkdtemp'
/usr/arm-linux-gnueabi/lib/ld-linux.so.3: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
Note: if build needs additional libraries, put them in CONFIG_EXTRA_LDLIBS.
Example: CONFIG_EXTRA_LDLIBS="pthread dl tirpc audit pam"
Makefile:721: recipe for target 'busybox_unstripped' failed
make: *** [busybox_unstripped] Error 1
jslim@ubuntu:~/environment/03_busybox/busybox-1.27.2$

여기서 에러의 원인을 정확히 모르겠습니다.
저는 "ld-linux.so.3: file not recognized: File format not recognized" 메시지가 이 문제를 해결하는데 도움이 될 줄 알고 열심히 찾아봤지만, 해결책을 찾지 못했습니다. ㅠㅠ

혹시 이 부분에 대해 무엇이 문제이고, 어떤 방법이 틀린 것이었는지, 또는 어떤 부분이 누락이 되어서 그런 것인지,
알고 계신 고수님들이 계시다면 부디 조언을 부탁드립니다.

감사합니다.

세벌의 이미지

http://www.kernel.bz/ 에 물어보면 어떨까요?
그곳 관리자 분이 크로스컴파일에 대해 잘 아실 거예요.

lux1075의 이미지

알려주신대로 http://www.kernel.bz/ 관리자 분께도 문의를 준비중 입니다.

질문을 올리다가 한가지 빼먹은게 있는데요,

Busybox에서 menuconfig를 할 수 있지 않습니까?? 아래 커맨드로 menuconfig를 수행했습니다.
(make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm menuconfig)

그러면 Dialog가 나타나는데,
-----------------------------------------------------------
Busybox Settings --->
[ ] Build BusyBox as a static binary (no shared libs)
-----------------------------------------------------------
위 경로에서 체크를 하고 make를 수행하면 Busybox가 빌드완료 됩니다. (※ 파일크기는 대략 2M정도)

뭔가 shared library와 연관이 있는것 같은데, 문제에 대해 좀 더 알고 싶습니다. ㅠㅠ

다들 바쁘시겠지만 지도 부탁드립니다.

감사합니다.

댓글 달기

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