cdrecord를 파워피씨(405GP)용으로 컴파일하는 과정 조언 부탁드

ssasoon의 이미지

리눅스용, CD-RW 버닝 프로그램 프로그램을 찾던중 cdrtools-2.00.3.tar.gz를
사용하게 되었습니다.

gcc(i686)은 make만 치면 컴파일되고 버닝 하기 위한 실행 파일들이 만들어 져서
쉽게 이미지파일을 만들고 버닝 작업도 할수 있었습니다.
문제는 power pc 405용 컴파일러 ppc_405-gcc로 컴파일 하려고 하는데 Makefile
이나 readme 화일을 여러번 보고 웹상에서도 자료를 찾아 보았으나
컴파일을 제대로 할 수 가 없었습니다.

혹시 ppc환경에서(ppc_405-gcc) 컴파일 해보신분 컴파일 하기 위한 tip 혹은 자료있으시면 조언 부탁드립니다

ktd2004의 이미지

익명 사용자의 이미지

알려주신 사이트로 가서 컴파일해보았으나
끝내 성공하지 못하게 되었습니다.
혹시 다른 방법이 있는지 기존에 성공하신
분들 꼭 알려주시면 감사하겠습니다.

익명 사용자의 이미지

위의 질문으로는 정확히 어디에 에러가 나는지는 잘 모르겠지만.....

제가 저번에 할때도 잘 안되라구요!
저는 이렇게 했거든요
inc 디렉토리의 makefile의 내용을 전부 주석처리했구요(필요없는 부분이라고 생각 했기에)
ppc로 컴파일 했다면 incs디렉토리에 ppc-linux-gcc라는 디레토리가 있을거에요 거기에 보면 xconfig.h라는 파일에서(없으면 복사하세요)
#define HAVE_C_BIGENDIAN
/* #undef WORDS_BIGENDIAN *
#define HAVE_C_BITFIELDS
/* #undef BITFIELDS_HTOL */
라은 부분이 있는데 이부분을
//#define HAVE_C_BIGENDIAN
#define WORDS_BIGENDIAN *
//#define HAVE_C_BITFIELDS
#define BITFIELDS_HTOL */
처럼 수정했습니다.
또 align.h 파일의
#define xaligned(a, s) ((((UIntptr_t)(a)) & (s)) == 0 )
#define x2aligned(a, b, s) (((((UIntptr_t)(a)) | ((UIntptr_t)(b))) & (s)) == 0 )
부분의 UIntptr_t 를 int 로 수정했구요

이렇게해서 컴파일 하니까 warring은 뜬는데 error는 없었어요
중요한건 cd굽는데 문제 없이 잘 동작 됩니다.
도움이 되었기를..... :)

익명 사용자의 이미지

먼저 aias76님 너무 고맙습니다. ^^;

아래는 제가 시도한 내용입니다. 추가로 확인할 사항이 있나요.
중간 틀린부분 알려주시면 감사하겠습니다.

1) KELP에서 설명된 i586-linux-gcc.rul을 수정
RULES/i586-linux-gcc.rul을 열어서 아래와 같이 gcc를 ppc_405-gcc로 수정하였습니다.

CC= @echo " ==> COMPILING \"$@\""; ppc_405-gcc
LDCC= @echo " ==> LINKING \"$@\""; ppc_405-gcc
DYNLD= @echo " ==> LINKING dynamic library \"$@\""; ppc_405-gcc
MKDEP= @echo " ==> MAKING DEPENDENCIES \"$@\""; $(RMDEP); gcc -M

<알려주신 내용>

2)inc 디렉토리의 makefile의 내용을 전부 주석처리

3)incs/ppc-linux-gcc/ xconfig.h라는 파일에서
#define HAVE_C_BIGENDIAN
/* #undef WORDS_BIGENDIAN *
#define HAVE_C_BITFIELDS
/* #undef BITFIELDS_HTOL */
라은 부분이 있는데 이부분을
//#define HAVE_C_BIGENDIAN
#define WORDS_BIGENDIAN *
//#define HAVE_C_BITFIELDS
#define BITFIELDS_HTOL */
처럼 수정

4)align.h 파일
#define xaligned(a, s) ((((UIntptr_t)(a)) & (s)) == 0 )
#define x2aligned(a, b, s) (((((UIntptr_t)(a)) | ((UIntptr_t)(b))) & (s)) == 0 )
부분의 UIntptr_t 를 int 로 수정
추가로 align.h 파일안에
#define xalign(x, a, m) ( ((char *)(x)) + ( (a) - 1 - ((((UIntptr_t)(x))-1)&(m)))

) 에서도 UIntptr_t 를 int 로 수정

#home/brad/cdrtools-2.00.3/make ARCH=ppc CCOM=gcc (<-- make 명령시 이렇게
하는것이 맞는지 모르겠습니다????)

아무튼 위와 같이 make하고 나면 다음과 같은 에러 메시지가 나타납니다.
링크 에러 같은데 -lschily에러도 보이구요

[root@dvrlab cdrtools-2.00.3]# make ARCH=ppc CCOM=gcc
==> MAKING "all" ON SUBDIRECTORY "SRCROOT/conf"
make[1]: Entering directory `/home/devel/brad/cdrtools-2.00.3/conf'
make[1]: `all'¸&brvbar; &Agrave;§&Ccedil;Ø &Ccedil;&Ograve; &Agrave;&Iuml;&Agrave;&Igrave; ¾ø½&Agrave;´&Iuml;´&Ugrave;
make[1]: Leaving directory `/home/devel/brad/cdrtools-2.00.3/conf'
==> MAKING "all" ON SUBDIRECTORY "SRCROOT/inc"
make[1]: Entering directory `/home/devel/brad/cdrtools-2.00.3/inc'
make[1]: *** &Aring;¸°&Ugrave; `all'¸&brvbar; ¸¸&micro;&eacute; ±&Ocirc;&Auml;&cent;&Agrave;&Igrave; ¾ø&Agrave;½. ¸Ø&Atilde;&atilde;.
make[1]: Leaving directory `/home/devel/brad/cdrtools-2.00.3/inc'
==> MAKING "all" ON SUBDIRECTORY "SRCROOT/lib"
NOTICE: Partial source (SRCROOT/lib) missing
==> MAKING "all" ON SUBDIRECTORY "SRCROOT/libdeflt"
make[1]: Entering directory `/home/devel/brad/cdrtools-2.00.3/libdeflt'
==> MAKING "all" ON SUBCOMPONENT "SRCROOT/libdeflt/libdeflt.mk"
make[2]: Entering directory `/home/devel/brad/cdrtools-2.00.3/libdeflt'
==> COMPILING "OBJ/ppc-linux-gcc/default.o"
==> ARCHIVING "../libs/ppc-linux-gcc/libdeflt.a"
==> RANDOMIZING ARCHIVE "../libs/ppc-linux-gcc/libdeflt.a"
make[2]: Leaving directory `/home/devel/brad/cdrtools-2.00.3/libdeflt'
make[1]: Leaving directory `/home/devel/brad/cdrtools-2.00.3/libdeflt'
==> MAKING "all" ON SUBDIRECTORY "SRCROOT/libedc"
make[1]: Entering directory `/home/devel/brad/cdrtools-2.00.3/libedc'
==> MAKING "all" ON SUBCOMPONENT "SRCROOT/libedc/libedc.mk"
make[2]: Entering directory `/home/devel/brad/cdrtools-2.00.3/libedc'
==> COMPILING "OBJ/ppc-linux-gcc/edc_ecc.o"
==> ARCHIVING "../libs/ppc-linux-gcc/libedc_ecc.a"
==> RANDOMIZING ARCHIVE "../libs/ppc-linux-gcc/libedc_ecc.a"
make[2]: Leaving directory `/home/devel/brad/cdrtools-2.00.3/libedc'
make[1]: Leaving directory `/home/devel/brad/cdrtools-2.00.3/libedc'
==> MAKING "all" ON SUBDIRECTORY "SRCROOT/libfile"
make[1]: Entering directory `/home/devel/brad/cdrtools-2.00.3/libfile'
==> COMPILING "OBJ/ppc-linux-gcc/file.o"
==> COMPILING "OBJ/ppc-linux-gcc/apprentice.o"
==> COMPILING "OBJ/ppc-linux-gcc/softmagic.o"
==> ARCHIVING "../libs/ppc-linux-gcc/libfile.a"
==> RANDOMIZING ARCHIVE "../libs/ppc-linux-gcc/libfile.a"
make[1]: Leaving directory `/home/devel/brad/cdrtools-2.00.3/libfile'
==> MAKING "all" ON SUBDIRECTORY "SRCROOT/libhfs_iso"
make[1]: Entering directory `/home/devel/brad/cdrtools-2.00.3/libhfs_iso'
==> COMPILING "OBJ/ppc-linux-gcc/data.o"
==> COMPILING "OBJ/ppc-linux-gcc/block.o"
==> COMPILING "OBJ/ppc-linux-gcc/low.o"
==> COMPILING "OBJ/ppc-linux-gcc/file.o"
==> COMPILING "OBJ/ppc-linux-gcc/btree.o"
==> COMPILING "OBJ/ppc-linux-gcc/node.o"
==> COMPILING "OBJ/ppc-linux-gcc/record.o"
==> COMPILING "OBJ/ppc-linux-gcc/volume.o"
==> COMPILING "OBJ/ppc-linux-gcc/hfs.o"
==> COMPILING "OBJ/ppc-linux-gcc/gdata.o"
==> ARCHIVING "../libs/ppc-linux-gcc/libhfs.a"
==> RANDOMIZING ARCHIVE "../libs/ppc-linux-gcc/libhfs.a"
make[1]: Leaving directory `/home/devel/brad/cdrtools-2.00.3/libhfs_iso'
==> MAKING "all" ON SUBDIRECTORY "SRCROOT/libparanoia"
make[1]: Entering directory `/home/devel/brad/cdrtools-2.00.3/libparanoia'
==> MAKING "all" ON SUBCOMPONENT "SRCROOT/libparanoia/paranoia.mk"
make[2]: Entering directory `/home/devel/brad/cdrtools-2.00.3/libparanoia'
==> COMPILING "OBJ/ppc-linux-gcc/gap.o"
==> COMPILING "OBJ/ppc-linux-gcc/isort.o"
==> COMPILING "OBJ/ppc-linux-gcc/overlap.o"
==> COMPILING "OBJ/ppc-linux-gcc/p_block.o"
==> COMPILING "OBJ/ppc-linux-gcc/paranoia.o"
==> ARCHIVING "../libs/ppc-linux-gcc/libparanoia.a"
==> RANDOMIZING ARCHIVE "../libs/ppc-linux-gcc/libparanoia.a"
make[2]: Leaving directory `/home/devel/brad/cdrtools-2.00.3/libparanoia'
make[1]: Leaving directory `/home/devel/brad/cdrtools-2.00.3/libparanoia'
==> MAKING "all" ON SUBDIRECTORY "SRCROOT/librscg"
make[1]: Entering directory `/home/devel/brad/cdrtools-2.00.3/librscg'
==> MAKING "all" ON SUBCOMPONENT "SRCROOT/librscg/librscg.mk"
make[2]: Entering directory `/home/devel/brad/cdrtools-2.00.3/librscg'
==> COMPILING "OBJ/ppc-linux-gcc/scsi-remote.o"
==> ARCHIVING "../libs/ppc-linux-gcc/librscg.a"
==> RANDOMIZING ARCHIVE "../libs/ppc-linux-gcc/librscg.a"
make[2]: Leaving directory `/home/devel/brad/cdrtools-2.00.3/librscg'
make[1]: Leaving directory `/home/devel/brad/cdrtools-2.00.3/librscg'
==> MAKING "all" ON SUBDIRECTORY "SRCROOT/libscg"
make[1]: Entering directory `/home/devel/brad/cdrtools-2.00.3/libscg'
==> MAKING "all" ON SUBCOMPONENT "SRCROOT/libscg/libscg.mk"
make[2]: Entering directory `/home/devel/brad/cdrtools-2.00.3/libscg'
==> COMPILING "OBJ/ppc-linux-gcc/scsitransp.o"
==> COMPILING "OBJ/ppc-linux-gcc/scsihack.o"
==> COMPILING "OBJ/ppc-linux-gcc/scsiopen.o"
==> COMPILING "OBJ/ppc-linux-gcc/scgsettarget.o"
==> COMPILING "OBJ/ppc-linux-gcc/scsierrs.o"
==> COMPILING "OBJ/ppc-linux-gcc/scgtimes.o"
==> COMPILING "OBJ/ppc-linux-gcc/scsihelp.o"
==> COMPILING "OBJ/ppc-linux-gcc/rdummy.o"
==> ARCHIVING "../libs/ppc-linux-gcc/libscg.a"
==> RANDOMIZING ARCHIVE "../libs/ppc-linux-gcc/libscg.a"
make[2]: Leaving directory `/home/devel/brad/cdrtools-2.00.3/libscg'
make[1]: Leaving directory `/home/devel/brad/cdrtools-2.00.3/libscg'
==> MAKING "all" ON SUBDIRECTORY "SRCROOT/libschily"
make[1]: Entering directory `/home/devel/brad/cdrtools-2.00.3/libschily'
==> MAKING "all" ON SUBCOMPONENT "SRCROOT/libschily/libschily.mk"
make[2]: Entering directory `/home/devel/brad/cdrtools-2.00.3/libschily'
==> COMPILING "OBJ/ppc-linux-gcc/cvmod.o"
==> COMPILING "OBJ/ppc-linux-gcc/fcons.o"
==> COMPILING "OBJ/ppc-linux-gcc/fdown.o"
==> COMPILING "OBJ/ppc-linux-gcc/fdup.o"
==> COMPILING "OBJ/ppc-linux-gcc/ffileread.o"
==> COMPILING "OBJ/ppc-linux-gcc/ffilewrite.o"
==> COMPILING "OBJ/ppc-linux-gcc/fgetline.o"
==> COMPILING "OBJ/ppc-linux-gcc/fgetstr.o"
==> COMPILING "OBJ/ppc-linux-gcc/file_raise.o"
==> COMPILING "OBJ/ppc-linux-gcc/fileclose.o"
==> COMPILING "OBJ/ppc-linux-gcc/fileluopen.o"
==> COMPILING "OBJ/ppc-linux-gcc/fileopen.o"
==> COMPILING "OBJ/ppc-linux-gcc/filepos.o"
==> COMPILING "OBJ/ppc-linux-gcc/fileread.o"
==> COMPILING "OBJ/ppc-linux-gcc/filereopen.o"
==> COMPILING "OBJ/ppc-linux-gcc/fileseek.o"
==> COMPILING "OBJ/ppc-linux-gcc/filesize.o"
==> COMPILING "OBJ/ppc-linux-gcc/filestat.o"
==> COMPILING "OBJ/ppc-linux-gcc/filewrite.o"
==> COMPILING "OBJ/ppc-linux-gcc/flag.o"
==> COMPILING "OBJ/ppc-linux-gcc/flush.o"
==> COMPILING "OBJ/ppc-linux-gcc/fpipe.o"
==> COMPILING "OBJ/ppc-linux-gcc/niread.o"
==> COMPILING "OBJ/ppc-linux-gcc/niwrite.o"
==> COMPILING "OBJ/ppc-linux-gcc/nixread.o"
==> COMPILING "OBJ/ppc-linux-gcc/nixwrite.o"
==> COMPILING "OBJ/ppc-linux-gcc/openfd.o"
==> COMPILING "OBJ/ppc-linux-gcc/peekc.o"
==> COMPILING "OBJ/ppc-linux-gcc/fcons64.o"
==> COMPILING "OBJ/ppc-linux-gcc/fdup64.o"
==> COMPILING "OBJ/ppc-linux-gcc/fileluopen64.o"
==> COMPILING "OBJ/ppc-linux-gcc/fileopen64.o"
==> COMPILING "OBJ/ppc-linux-gcc/filepos64.o"
==> COMPILING "OBJ/ppc-linux-gcc/filereopen64.o"
==> COMPILING "OBJ/ppc-linux-gcc/fileseek64.o"
==> COMPILING "OBJ/ppc-linux-gcc/filesize64.o"
==> COMPILING "OBJ/ppc-linux-gcc/filestat64.o"
==> COMPILING "OBJ/ppc-linux-gcc/openfd64.o"
==> COMPILING "OBJ/ppc-linux-gcc/astoi.o"
==> COMPILING "OBJ/ppc-linux-gcc/astoll.o"
==> COMPILING "OBJ/ppc-linux-gcc/breakline.o"
==> COMPILING "OBJ/ppc-linux-gcc/comerr.o"
==> COMPILING "OBJ/ppc-linux-gcc/cmpbytes.o"
==> COMPILING "OBJ/ppc-linux-gcc/cmpnullbytes.o"
==> COMPILING "OBJ/ppc-linux-gcc/error.o"
==> COMPILING "OBJ/ppc-linux-gcc/fconv.o"
==> COMPILING "OBJ/ppc-linux-gcc/fexec.o"
==> COMPILING "OBJ/ppc-linux-gcc/fillbytes.o"
==> COMPILING "OBJ/ppc-linux-gcc/findbytes.o"
==> COMPILING "OBJ/ppc-linux-gcc/findline.o"
==> COMPILING "OBJ/ppc-linux-gcc/format.o"
==> COMPILING "OBJ/ppc-linux-gcc/getargs.o"
==> COMPILING "OBJ/ppc-linux-gcc/getav0.o"
getav0.c:29:22: avoffset.h: ±×·± Æ&Auml;&Agrave;&Iuml;&Agrave;&Igrave;³ª &micro;ð·º&Aring;&auml;¸

익명 사용자의 이미지

aias76님
컴파일을 시도하다가 incs/ppc-linux-gcc/ 디렉토리에
xconfig.h 과 align.h이 없어 때로는 수동으로 카피하여
다시 make ARCH=ppc CCOM=gcc으로 컴파일하였으나
ld 에러(cannot find -lschily)나 undefined reference to l2aligned(),,,
에러가 발생합니다.

제발 도와 주세요.. 흑흑흑...

aias76의 이미지

이상하네요
ssasoon1님이 말씀하신 내용이 파일들이 없을때 났던 에러인데...
확실히 align.h avoffset.h xconfig.h가 있는데 안되는 건가요?
혹 파일은 보이는데 파일용량이 0 KB 아닌가요?

그리고 이부분
#define xalign(x, a, m) ( ((char *)(x)) + ( (a) - 1 - ((((UIntptr_t)(x))-1)&(m)))

) 에서도 UIntptr_t 를 int 로 수정 하는게 맞아요!
아니면 에러나요

익명 사용자의 이미지

aias76님
너무 감사드려요 드디어 컴파일에 성공하였고
말씀하신데로 iso이미지도 정상으로 만들어지고
burning하는데도 전혀 문제가 없네요. ^^
저 같은 경우에는 순서가 중요하더구요.
최초 한번은 compile error(libschily.a fail)를
일부러 뜨게 하고 그다음에 align.h,xconfig.h
과 makefile을 수정한뒤 재시도하니깐 compile이
무리없이 되었습니다.

도와주신 KTD님 aias76님 다시 한번 감사드립니다.

행복하세요.

ktd2004의 이미지

성고하셨다니 축하드립니다.

cdrtools가 컴파일시에 archtecture에 일치하는 헤더파일을 직접 생성합니다. byte align, 변수 사이즈등요...

가장 좋은 방법은 ppc_405 하에서 컴파일환경을 꾸며서 직접 컴파일하는 거겠죠..
hhl에 보면 ppc archtecture용 컴파일러와 바이너리도 있으니까요.

다시 한번 축하드립니다....

댓글 달기

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