cdrecord를 파워피씨(405GP)용으로 컴파일하는 과정 조언 부탁드
글쓴이: ssasoon / 작성시간: 수, 2005/09/14 - 6:32오후
리눅스용, CD-RW 버닝 프로그램 프로그램을 찾던중 cdrtools-2.00.3.tar.gz를
사용하게 되었습니다.
gcc(i686)은 make만 치면 컴파일되고 버닝 하기 위한 실행 파일들이 만들어 져서
쉽게 이미지파일을 만들고 버닝 작업도 할수 있었습니다.
문제는 power pc 405용 컴파일러 ppc_405-gcc로 컴파일 하려고 하는데 Makefile
이나 readme 화일을 여러번 보고 웹상에서도 자료를 찾아 보았으나
컴파일을 제대로 할 수 가 없었습니다.
혹시 ppc환경에서(ppc_405-gcc) 컴파일 해보신분 컴파일 하기 위한 tip 혹은 자료있으시면 조언 부탁드립니다
Forums:
http://kelp.or.kr/korweblog/stories.php?
http://kelp.or.kr/korweblog/stories.php?story=04/09/08/0789892
여기를 한번 참고해 보시죠...
알려주신 사이트로 가서 컴파일해보았으나끝내 성공하지 못하게 되었습니다
알려주신 사이트로 가서 컴파일해보았으나
끝내 성공하지 못하게 되었습니다.
혹시 다른 방법이 있는지 기존에 성공하신
분들 꼭 알려주시면 감사하겠습니다.
위의 질문으로는 정확히 어디에 에러가 나는지는 잘 모르겠지만.....
위의 질문으로는 정확히 어디에 에러가 나는지는 잘 모르겠지만.....
제가 저번에 할때도 잘 안되라구요!
저는 이렇게 했거든요
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굽는데 문제 없이 잘 동작 됩니다.
도움이 되었기를..... :)
cdrecord ppc에서 추가문의
먼저 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'¸¦ À§ÇØ ÇÒ ÀÏÀÌ ¾ø½À´Ï´Ù
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]: *** Ÿ°Ù `all'¸¦ ¸¸µé ±ÔÄ¢ÀÌ ¾øÀ½. ¸ØÃã.
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: ±×·± ÆÄÀÏÀ̳ª µð·ºÅä¸
aias76님 컴파일을 시도하다가 incs/ppc-linux-gcc/
aias76님
컴파일을 시도하다가 incs/ppc-linux-gcc/ 디렉토리에
xconfig.h 과 align.h이 없어 때로는 수동으로 카피하여
다시 make ARCH=ppc CCOM=gcc으로 컴파일하였으나
ld 에러(cannot find -lschily)나 undefined reference to l2aligned(),,,
에러가 발생합니다.
제발 도와 주세요.. 흑흑흑...
이상하네요ssasoon1님이 말씀하신 내용이 파일들이 없을때 났던 에
이상하네요
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님너무 감사드려요 드디어 컴파일에 성공하였고말씀하신데로
aias76님
너무 감사드려요 드디어 컴파일에 성공하였고
말씀하신데로 iso이미지도 정상으로 만들어지고
burning하는데도 전혀 문제가 없네요. ^^
저 같은 경우에는 순서가 중요하더구요.
최초 한번은 compile error(libschily.a fail)를
일부러 뜨게 하고 그다음에 align.h,xconfig.h
과 makefile을 수정한뒤 재시도하니깐 compile이
무리없이 되었습니다.
도와주신 KTD님 aias76님 다시 한번 감사드립니다.
행복하세요.
성고하셨다니 축하드립니다.cdrtools가 컴파일시에 archte
성고하셨다니 축하드립니다.
cdrtools가 컴파일시에 archtecture에 일치하는 헤더파일을 직접 생성합니다. byte align, 변수 사이즈등요...
가장 좋은 방법은 ppc_405 하에서 컴파일환경을 꾸며서 직접 컴파일하는 거겠죠..
hhl에 보면 ppc archtecture용 컴파일러와 바이너리도 있으니까요.
다시 한번 축하드립니다....
댓글 달기