'__getdelim'에 해당하는 글 1건

CentOS 6 에는 기본적으로 gcc 4.6.6 이 설치되어있다.


하지만 필요에 따라서 여러 버전의 GCC 를 유지할 필요가 있다.


ARM 크로스 컴파일을 위해 arm-gcc-3.3.2,  3.4.2,  4.3.2 를 유지하고있고


X86 을 위해서는  gcc-4.3.0, gcc-4.4.6, gcc-4.3.3 을 설치해놓고 있다.


각 distribution 마다 설정해줘야할 environment variable 들을 설정하는 쉘 스크립트들을


*.env 라는 확장자로 저장해서, 필요할때마다 source 해서 사용해오고 있다.




이번 문제와 같은경우는, cuda 2.3 SDK 를 buliding 하기위해서   gcc 4.3.3 을 사용했었어야 했는데


아래와 같은 에러가 발생한다.


/usr/include/bits/stdio.h: In function ‘__ssize_t getline(char**, size_t*, FILE*)’:
/usr/include/bits/stdio.h:118: error: ‘__getdelim’ was not declared in this scope



구글링을 하다가 아래와 같은 해결책을 발견했다.


출처는 : https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideCMSSWOnUbuntu


1) 우선 /udr/include/stdio.h 를 연다.


2) 아래의 코드부분을 찾아서..

#ifdef __USE_GNU /* This function does the same as `fgets' but does not lock the stream. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern char *fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) __wur; #endif

3) #endif 가 끝나는곳 바로직전에 다음을 추가하면 된다.

extern _IO_ssize_t __getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) __wur;

뭔가 지저분하지만 급하니까 일단 임시방편으로 이렇게하고 넘어간다 :(





WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,