undefined reference to `__fixdfsi' 은 무슨 뜻인지 ,,, 그리고 솔루션을 좀 알려주시면 대단히 감사하겠습니다.

kjs1725의 이미지

제가 make 명령을 쳤을 때, 이런 에러 로그가 나왔습니다.
그래서 제가 구글링을 해보지 않았겠습니까?
float에 무슨 문제가 있다고 하는데요,,, 어떻게 해야 문제가 해결 될까요?
(저는 우분투에서 크로스 툴체인을 이용하여 ppc용 소스를 빌드 하고 있습니다.)

-- 고수님들!!!! 고수님의 한마디 답변이 절실히 필요합니다. --
...
[LD] misc.lo OK
[CC] rand.c OK
[CC] free.c OK
[CC] malloc.c OK
[CC] calloc.c OK
[LD] stdlib.lo OK
[LD] libc.lo OK
[AR] libpok.a OK
Assemble partition part1.elf /usr/bin/powerpc-linux-gnuspe-ld -T /home/eslab/Desktop/Source/etri-pok/trunk/misc/ldscripts/ppc/prep/partition.lds main.o activity.o subprograms.o gtypes.o hello1.o -o part1.elf -L/home/eslab/Desktop/Source/etri-pok/trunk/libpok -lpok -Map part1.elf.map
/home/eslab/Desktop/Source/etri-pok/trunk/libpok/libpok.a(libc.lo)(.text+0x274): In function `print_float':
/home/eslab/Desktop/Source/etri-pok/trunk/libpok/libc/stdio/printf.c:159: undefined reference to `__fixdfsi'
/home/eslab/Desktop/Source/etri-pok/trunk/libpok/libpok.a(libc.lo)(.text+0x2ac):/home/eslab/Desktop/Source/etri-pok/trunk/libpok/libc/stdio/printf.c:166: undefined reference to `__floatsidf'
/home/eslab/Desktop/Source/etri-pok/trunk/libpok/libpok.a(libc.lo)(.text+0x2c8):/home/eslab/Desktop/Source/etri-pok/trunk/libpok/libc/stdio/printf.c:171: undefined reference to `__subdf3'
/home/eslab/Desktop/Source/etri-pok/trunk/libpok/libpok.a(libc.lo)(.text+0x2d8):/home/eslab/Desktop/Source/etri-pok/trunk/libpok/libc/stdio/printf.c:171: undefined reference to `__floatsidf'
/home/eslab/Desktop/Source/etri-pok/trunk/libpok/libpok.a(libc.lo)(.text+0x2ec):/home/eslab/Desktop/Source/etri-pok/trunk/libpok/libc/stdio/printf.c:171: undefined reference to `__muldf3'
/home/eslab/Desktop/Source/etri-pok/trunk/libpok/libpok.a(libc.lo)(.text+0x2f0):/home/eslab/Desktop/Source/etri-pok/trunk/libpok/libc/stdio/printf.c:171: undefined reference to `__fixunsdfsi'
make[1]: *** [part1.elf] 오류 1
make: *** [partitions] 오류 2

실시간으로 확인중 입니다.
머 필요하신 정보가 있으시면 바로 바로 올려 드리겠습니다.

================================================================================================================================================================================
+추가 내용

libpok.a가 ok가 나왔으니, 잘만들어 진 건가요??
아니면, `__fixdfsi' `__floatsidf' 등등을 생략하고 만든 것인가요??

그리고,,, 저는 rpm으로 크로스 컴파일러를 설치하였는데요,,,
path같은것을 잡아 주어야 하나요?? 보니깐 /opt/mtmk/usr/local/powerpc-linux- ....
여기에 깔려 있더라고요,,, 그래서 make 할 때 헤더파일을 못찾는 다는 에러가 한번 나와서요,
제가 gcc가 깔려 있는 폴더에 가서 헤더 파일을 복사해서 제가 돌리고자 하는 소스에 붙여넣기를 한적이 있습니다.

그리고
rm /usr/bin/gcc
ln -s /opt/mtmk/usr/local/powerpc-linux- .... /bin/powepc-linux-.... /usr/bin/gcc
위 명령어를 치고 다시 make를 하니깐 저기 에러가 뜨기전까지 돌았습니다.(ㅜ,ㅜ)

제가 리눅스에 익숙치가 않아,,,
초보적인 질문일 수도 있습니다.

vacancy의 이미지


Floating point를 지원하지 않는 하드웨어에서
이를 사용하려면 floating point emulation이 필요합니다.

libgcc 빌드할 때 영향도 좀 있고 해서 당장 해결해드릴 수는 없겠지만;
http://gcc.gnu.org/onlinedocs/gccint/Soft-float-library-routines.html
여기 참고하시고 혹시 모르니 -msoft-float 옵션도 줘보세요.

그래도 안되면 gcc 빌드할 때(정확힌 configure할 때) 옵션을 좀 줘야할 겁니다. (가물가물)

kjs1725의 이미지

하지만, -msoft-float 옵션을 주어도,,, 해결이 돼지는 않았습니다. ㅜ,ㅜ
좀더 tip을 들을 수 있을까요 ??
부탁 드립니다.

kjs1725의 이미지

ld 할때 -msoft-float -lgcc
옵션을 다 주어 봤지만,,,
여전히 해결이 안돼네요 ,,,
좀더 조언을 해주실것이 있다면
부탁드립니다.

익명 사용자의 이미지

안될때는 어떤 오류 메시지가 나올겁니다. 그걸 써주셔야지 뭐가 문제인지 알 수 있지요.

익명 사용자의 이미지

ld 옵션에 -lgcc 옵션도 함께 추가해보세요.

kjs1725의 이미지

AR_ppc=/usr/bin/powerpc-linux-gnuspe-ar rcs
AR_x86=/usr/bin/ar rcs
AWK=/usr/bin/gawk
CAT=/bin/cat
CC_ppc=/usr/bin/powerpc-linux-gnuspe-gcc
CC_x86=/usr/bin/gcc
CD=cd
CONFIG_CFLAGS=-W -Wall -g -m32
CONFIG_LDFLAGS=--warn-common -msoft-float -lgcc
CONFIG_QEMU_x86= -fda $(ETRI_POK_PATH)/misc/grub-boot-only.img
COPY=/bin/cp
CP=/bin/cp
CXX_x86=/usr/bin/g++
ECHO=/bin/echo
ELF_MODE=elf_i386
GREP=/bin/grep
GZIP=/bin/gzip
INSTRUMENTATION=0
KILL=/bin/kill
LD_ppc=/usr/bin/powerpc-linux-gnuspe-ld

config 파일의 일부인데요,,,
CONFIG_LDFLAGS=--warn-common -msoft-float -lgcc

여기서 이렇게 옵션을 주는 것이 맞는 것인지요??
LDflag라고 나온 키워드는 이 것 뿐이라서요.

익명 사용자의 이미지

저에게 묻지 마시고 일단 직접 실행해보세요. libgcc.a static 라이브러리에 소프트웨어 실수연산에 필요한 각종 루틴이 들어있습니다.
-lgcc하면 오류가 어떻게 바뀌는지 확인해보시라는 것입니다.
LD_ppc=/usr/bin/powerpc-linux-gnuspe-ld -lgcc 라고 해도 될 수 있습니다.

댓글 달기

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