glibc 2.23 크로스컴파일 문의

lux1075의 이미지

우분투에서 apt-get 으로 다운받은 arm-linux-gnueabi-gcc-4.9 패키지 라이브러리인 ld-2.23.so 가
커널 버전이 lowest할 경우, "FATAL: kernel too old" 메시지가 출력되어 커널패닉이 발생하고 있습니다.
그 이유로 glibc-2.23 소스코드를 크로스컴파일 하여 2.6.35 커널에서 수행되도록 하려고 합니다.

glibc-2.23을 빌드하는데 make check에서 계속 실패하고 있습니다.

$ make check
...
...
make[2]: Entering directory '/home/jslim/ltib/package/glibc/glibc-2.23/locale'
...
/home/jslim/ltib/package/glibc/build/elf/ld-linux.so.3: 1: /home/jslim/ltib/package/glibc/build/elf/ld-linux.so.3: Syntax error: word unexpected (expecting ")")
...
make[2]: Leaving directory '/home/jslim/ltib/package/glibc/glibc-2.23/locale'
make subdir=localedata -C localedata ..=../ tests
make[2]: Entering directory '/home/jslim/ltib/package/glibc/glibc-2.23/localedata
...
Generating locale de_DE.ISO-8859-1: this might take a while...
/home/jslim/ltib/package/glibc/build/elf/ld-linux.so.3: 1: /home/jslim/ltib/package/glibc/build/elf/ld-linux.so.3: Syntax error: word unexpected (expecting ")")
Charmap: "ISO-8859-1" Inputfile: "de_DE" Outputdir: "de_DE.ISO-8859-1" failed
/bin/sh: 4: cannot create /home/jslim/ltib/package/glibc/build/localedata/de_DE.ISO-8859-1/LC_CTYPE.test-result: Directory nonexistent
../gen-locales.mk:17: recipe for target '/home/jslim/ltib/package/glibc/build/localedata/de_DE.ISO-8859-1/LC_CTYPE' failed
make[2]: *** [/home/jslim/ltib/package/glibc/build/localedata/de_DE.ISO-8859-1/LC_CTYPE] Error 2
make[2]: Leaving directory '/home/jslim/ltib/package/glibc/glibc-2.23/localedata'
...
...

make는 성공하고 있습니다. 혹시 make check 실패는 무시해도 괜찮은 건가요??

고수님들께서 잠시 들리셔서 가르침을 부탁드립니다.

아래는 configure 내용입니다.
그리고 그 결과를 첨부 합니다.
----------------------configure----------------------
CC=arm-linux-gnueabi-gcc-4.9 \
CXX=arm-linux-gnueabi-g++-4.9 \
LD=arm-linux-gnueabi-ld \
NM=arm-linux-gnueabi-gcc-nm-4.9 \
AR=arm-linux-gnueabi-gcc-ar-4.9 \
AS=arm-linux-gnueabi-as \
OBJDUMP=arm-linux-gnueabi-objdump \
OBJCOPY=arm-linux-gnueabi-objcopy \
../glibc-2.23/configure \
--enable-kernel=2.6.35 \
--host=arm-linux-gnueabi \
--with-headers=/usr/arm-linux-gnueabi/include \
--prefix=/home/jslim/ltib/package/glibc/glibc-2.23/result

File attachments: 
첨부파일 크기
Package icon glibc-2.23 configure 결과9.78 KB
jick의 이미지

2.6.35는 찾아보니 2010년에 나온 커널이네요. 최근에 나온 소프트웨어를 쓰려고 하면 거의 문제가 생길 수밖에 없겠는데요. 굳이 8년 전 커널을 꼭 찾아서 써야만 하는 사정이 있으신 건가요?

lux1075의 이미지

커널을 업데이트 하면 기존에 구현해놓은 드라이버 파일들에 영향이 있을 수 있어서,
가능하다면 커널을 내비두고 라이브러리만 교체하려 합니다.

하지만 도저히 커널을 업데이트 하지 않고는 불가능하다면, 커널을 업데이트 하는 것도 고려는 하고 있습니다.

몇가지 진척사항이 있는데,

glibc-2.23 의 "make check는 실패할 수 있다" 라는 내용을 찾았습니다.
(http://www.linuxfromscratch.org/lfs/view/7.9-systemd-rc2/chapter06/glibc.html)

그래서 make install로 진행하여, 결과물들을 rootfs 하위 디렉토리에 각자 위치시켰습니다.

그렇게 만든 rootfs를 타겟보드에 올리고 부팅을 해보니,
"FATAL: kernel too old" 라는 메시지는 더이상 나오지 않습니다.

다만 "/sbin/init: error while loading shared libraries: libm.so.6: cannot open shared object file: No such file or directory" 메시지가 발생하고 있는 상황입니다.

busybox-1.27.2를 크로스 컴파일한 결과물을 가져다 쓴건데, 그 busybox가 문제라고 생각합니다.
($ file buxybox --> 결과 : busybox: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=a4dd2fcb0da268cb76e8cf7e0d048ed5ecdf2ecb, stripped)

아... 참으로 어렵습니다..ㅠ
이제 busybox Makefile에서 새로 빌드한 glibc-2.23의 ld 라이브러리를 이용하도록 하여 빌드하면 되는것 아닐까 생각이 듭니다.

그 추측이 맞다고 생각하고, busybox Makefile에서 LDFLAGS 값에 -L/home/jslim/package/glibc/glibc-2.23/result/lib 를 추가하여 빌드했는데, 아래와 같은 링크에러가 잔뜩 나오네요ㅠㅠ
----------------------------buxybox-1.27.2 error----------------------------
jslim@jslim-VirtualBox:~/ltib/package/busybox/busybox-1.27.2$ make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm LINK busybox_unstripped
Trying libraries: crypt m
Failed: -Wl,--start-group -lcrypt -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 -L/home/jslim/ltib/package/glibc/glibc-2.23/result/lib -o busybox_unstripped -Wl,--sort-common -Wl,--sort-section,alignment -Wl,--gc-sections -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 -lcrypt -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'
util-linux/lib.a(mount.o): In function `xdr_fhstatus':
mount.c:(.text.xdr_fhstatus+0xc): undefined reference to `xdr_u_int'
mount.c:(.text.xdr_fhstatus+0x34): undefined reference to `xdr_opaque'
util-linux/lib.a(mount.o): In function `xdr_mountres3':
mount.c:(.text.xdr_mountres3+0xc): undefined reference to `xdr_enum'
mount.c:(.text.xdr_mountres3+0x40): undefined reference to `xdr_bytes'
mount.c:(.text.xdr_mountres3+0x6c): undefined reference to `xdr_array'
mount.c:(.text.xdr_mountres3+0x78): undefined reference to `xdr_int'
util-linux/lib.a(mount.o): In function `xdr_dirpath':
mount.c:(.text.xdr_dirpath+0x4): undefined reference to `xdr_string'
util-linux/lib.a(mount.o): In function `nfsmount':
mount.c:(.text.nfsmount+0x91c): undefined reference to `pmap_getmaps'
mount.c:(.text.nfsmount+0xac4): undefined reference to `clntudp_create'
mount.c:(.text.nfsmount+0xaf4): undefined reference to `clnttcp_create'
mount.c:(.text.nfsmount+0xb10): undefined reference to `clnt_spcreateerror'
mount.c:(.text.nfsmount+0xb1c): undefined reference to `authunix_create_default'
mount.c:(.text.nfsmount+0xba0): undefined reference to `clnt_sperror'
mount.c:(.text.nfsmount+0xbc0): undefined reference to `clnt_sperror'
mount.c:(.text.nfsmount+0xdd4): undefined reference to `pmap_getport'
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:722: recipe for target 'busybox_unstripped' failed
make: *** [busybox_unstripped] Error 1

제가 진행하고 있는 방향이 맞는 방향인가요??
맞다면 어디가 부족해서 그런지 도움을 부탁드립니다.
고수님들 도와주세요~~

댓글 달기

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