← Back to team overview

cubrid team mailing list archive

Re: 컴파일 중 오류...

 

전체 회신을 하신것이 아니고, 저에게만 회신을 하셨네요 ^^
제가 메일링 리스트를 cc로 추가 하여 회신합니다.

2010/1/20 jc k <shriekout@xxxxxxxxx>

> 재밌는 사실 하나를 발견해서 일단 글을 씁니다. lol
> libelf-dev는 설치가 되어 있는데, 구조체 nlist에서 n_name가 멤버가 아니라고 하는 이유는...
> libbsd-dev와 충돌을 일으키기 때문입니다. :)
> libbsd-dev는 utility functions from BSD systems - development files 인데...
> 이 녀석이 libelf-dev에서 설치한 nlist.h를 대체해버리는 군요.
> libelf-dev에서 설치한 nlist.h에는 구조체 nlist가
>
> struct nlist
> {
>   char *n_name;            /* Symbol name.  */
>   long int n_value;        /* Value of symbol.  */
>   short int n_scnum;        /* Section number found in.  */
>   unsigned short int n_type;    /* Type of symbol.  */
>   char n_sclass;        /* Storage class.  */
>   char n_numaux;        /* Number of auxiliary entries.  */
> };
>
> 이렇게 정의되어 있습니다. 그런데, libbsd-dev에서 대체한 nlist.h에는
> 구조체 nlist가 extern 으로 되어 있고, a.out.h를 참조하게 되어 있네요.
> 그리고, 이전에 말씀드린 것과 같이 a.out.h에서는 구조체 nlist가
>
> #if !defined (N_NLIST_DECLARED)
> struct nlist
> {
>   union
>     {
>       char *n_name;
>       struct nlist *n_next;
>       long n_strx;
>     } n_un;
>   unsigned char n_type;
>   char n_other;
>   short n_desc;
>   unsigned long n_value;
> };
> #endif /* no N_NLIST_DECLARED.  */
>
> 이렇게 정의되어 있습니다.
> 즉, BSD 스타일에서는 n_name 포인터에 접근하기 위해서는
> *(struct nlist)aaa.n_un.name로 접근을 해야 하는군요. (이렇게 표현하는게 맞는지 모르겠습니다. 포인터는 항상
> 헷갈... ;;;)
> 일단 제 문제는 해결되었습니다. :)
>
> 그리고, LDFLAGS 플래그 문제는... 이전에 저도 무력화를 시켜봤습니다만, 여전히 되지 않습니다.
> 앞에 버그 리포팅 링크를 보고 LDFLAGS:= 를 debian/rules에 포함시켜봤습니다만,
> ./configure ... LDFLAGS=' '... 플래그 내용은 없지만, LDFLAGS 플래그는 표시됩니다.
> 앞서 말씀드린 것과 같이, LDFLAGS가 명시되는 순간 에러를 뱉어내며 멈추어버립니다.
> 이전에 말씀드린 make distclean 문제와 같이 연관이 되어 있는 것 같은데요.
> 즉, external 디렉토리가 따로 노는 문제와 관계가 있는 것 같습니다.
> configure.ac 와 등등을 뜯어보았으면 하는데,
> 사실 좀 귀찮고, 현재 안정적으로 배포된 소스로 빌드를 하고자 하고,
> 소스를 건드리지 말고, 빌드를 해보고자 합니다.
> (이렇게 하는게 성공해야 이후에 배포판에서 안정적으로 배포가 되리라 생각됩니다.
> 배포판이 업글될 때마다 패키지 관리를 하는 우분투면 motu에게,
> 데비안이면 메인테너에게 메일을 보내야 하는 그런 불상사가 없으면 하는 그런 바램이기도 합니다.)
> 빌드가 성공하고(엄격히 말하자면, 빌드는 성공했죠... 배포를 위한 업로드 빌드가 실패...),
> 이후에 패키지 형태의 배포를 위해 몇가지 추가를 추가해야 할 부분을 해결하고,
> 안 귀찮으면, autotool을 좀 살펴보고자 합니다. :)
>
> 오늘은 날씨가 좀 따뜻해져서 다행입니다.
> 이곳 울산은 오늘 온도가 14도까지 올라갔었고,
> 다른 분들이 사는 지역도 이전에 비해 많이 따뜻하셨을거라 생각됩니다.
> (전 오늘 용접하다가 쪄 죽는줄 알았습니다. ㅋㅋ)
> 감기 조심하시고, 즐거운 삽질이 되길 기원합니다. :)
>
> 2010년 1월 20일 오후 3:34, 김성규 <xkyukim@xxxxxxxxx>님의 말:
>
> LDFLAGS 관련 빌드 에러는
>> https://bugs.launchpad.net/ubuntu/+source/lives/+bug/481085
>>  <https://bugs.launchpad.net/ubuntu/+source/lives/+bug/481085>와 관련되어있는 듯
>> 하고요 위의 버전에서 해결되었다하네요.
>>
>> 그리고,
>>  ../src/base/dynamic_load.c:2087: error: ‘struct nlist’ has no member
>> named ‘n_name’
>> 관련 에러는
>> libelf-dev 패키지를 설치하면 해결되는 것으로 기억합니다~ (/usr/include/nlist.h 헤더파일이 있어야 합니다.)
>>
>>
>>
>> 2010/1/19 jc k <shriekout@xxxxxxxxx>
>>
>>>  일단 configure 에서 LDFLAGS 플래그 문제는 호환성 무시하고
>>> ./configure --prefix=/usr --with-jdk=/usr/lib/jvm/default-java
>>> --with-libedit=/usr --with-lzo2=/usr --with-pcre=/usr --with-gc=/usr
>>> 'CFLAGS=-g -O2' 'CPPFLAGS=' 'CXXFLAGS=-g -O2' 'FFLAGS=-g -O2'
>>> 'LDFLAGS=-Wl,-Bsymbolic-functions' --cache-file=/dev/null --srcdir=.
>>> 이렇게 옵션을 줘서 통과했습니다만..
>>> 이번에는 make 도중에 오류가 나는군요 ;;
>>>
>>> ../src/base/dynamic_load.c: In function ‘dl_resolve_symbol’:
>>> ../src/base/dynamic_load.c:2087: error: ‘struct nlist’ has no member
>>> named ‘n_name’
>>> ../src/base/dynamic_load.c:2093: error: ‘struct nlist’ has no member
>>> named ‘n_name’
>>> ../src/base/dynamic_load.c:2110: error: ‘struct nlist’ has no member
>>> named ‘n_name’
>>> ../src/base/dynamic_load.c:2121: error: ‘struct nlist’ has no member
>>> named ‘n_name’
>>> ../src/base/dynamic_load.c:2130: error: ‘struct nlist’ has no member
>>> named ‘n_name’
>>> ../src/base/dynamic_load.c:2137: error: ‘struct nlist’ has no member
>>> named ‘n_name’
>>> make[3]: *** [dynamic_load.lo] 오류 1
>>> make[3]: Leaving directory
>>> `/home/shriekout/source/cubrid/cubrid-8.2.1.661/sa'
>>> make[2]: *** [all-recursive] 오류 1
>>> make[2]: Leaving directory
>>> `/home/shriekout/source/cubrid/cubrid-8.2.1.661'
>>> make[1]: *** [all] 오류 2
>>> make[1]: Leaving directory
>>> `/home/shriekout/source/cubrid/cubrid-8.2.1.661'
>>> dh_auto_build: make returned exit code 2
>>> make: *** [binary] 오류 1
>>>
>>> /usr/include/a.out.h 를 보니...
>>> #if !defined (N_NLIST_DECLARED)
>>> struct nlist
>>> {
>>>   union
>>>     {
>>>       char *n_name;
>>>       struct nlist *n_next;
>>>       long n_strx;
>>>     } n_un;
>>>   unsigned char n_type;
>>>   char n_other;
>>>   short n_desc;
>>>   unsigned long n_value;
>>> };
>>> #endif /* no N_NLIST_DECLARED.  */
>>>
>>> 이렇게 되어 있는데요...
>>> 전에 제 시스템에서 컴파일은 잘 되었었는데...
>>> 제가 유저 불량일까요? ㅠㅠ
>>>
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~cubrid
>>> Post to     : cubrid@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~cubrid
>>> More help   : https://help.launchpad.net/ListHelp
>>>
>>>
>>
>
>
> --
> 내가 손을 내밀면 내 손에 와서 고와지는 햇살
>

References