2014-08-28 3 views
0

의 원인이 나는 iconv 어제 다운로드하고 사용하여 설치 나는 export LD_LIBRARY_PATH=/usr/local/lib을 처형했다. 그런 다음 iconv가 작동했습니다.의 iconv 라이브러리 여러 설치 오류

이로 인해 응용 프로그램에서 오류가 발생했습니다. 소스 파일 중 하나에 이미 iconv.h이 포함되어 있다는 사실을 모르고있었습니다. 오늘은 성공적으로 이클립스 디버그 버전을 여러 번 내장하지만 릴리스 빌드에 올 때, 나는 이러한 오류를 얻을 : 다음 당황

undefined reference to `libiconv_close' 
undefined reference to `libiconv_open' 
undefined reference to `libiconv' 

, 다시 시작, make uninstall 실행하지만, 문제가 남아있다. 프로그램을 다시 작동 시키려면 어떻게합니까?

ldconfig -v | grep "iconv" shows: 
libiconv.so.2 -> libiconv.so.2.5.1 

나는 LTS

답변

1

LD_LIBRARY_PATH 우분투 12.04에있어 목적을 디버깅 만을 사용해야하거나 수정하기가 너무 어려울 것이다 버그를 주위에 작업을 재정의합니다.

당신이 여기서 설명한 내용이 조만간 발생할 수 있기 때문에, 특히 수동으로 컴파일 된 소프트웨어를 시스템 디렉토리에 설치할 때 어떤 일이 일어날 지 모르니 ... (질문 : ?.

alias iconv="LD_LIBRARY_PATH=/usr/local/lib iconv" 
't 당신이 당신의 패키지 관리자를 통해 iconv를 설치하는 것이이 항상 첫 번째 선택한다)

당신의 iconv 설치 라이브러리 경로를 필요로한다면, 지역 오버라이드 별칭을 만들

이렇게하면 iconv이 올바르게 실행되지만 다른 패키지 나 빌드 프로세스에는 영향을 미치지 않습니다.


결론, 찾아 export LD_LIBRARY_PATH=... (당신이 그것을 넣어 수도 곳), 그리고 그것을 제거. 물론 응용 프로그램을 올바르게 컴파일해야합니다. (물론 수동 설치/제거를 통해 시스템을 blued하지 않는 한 /usr ...)

+0

고마워요, 제 수업을 배웠습니다. '-liconv'를 추가하고 나서 프로그램을 다시 실행할 수 있으며, 공유 오브젝트 파일을'/ usr/lib'에 복사했습니다. 어떻게 이전에 이것없이 달렸습니까? 'iconv.h'는 프로젝트에 복사되지 않습니다. – Innkeeper

+0

@Innkeeper : 충분한 정보를주지 못했기 때문에 말하는 것이 어렵습니다. (나는 알아 내기에 너무 관심이 없다.) 일반 규칙 ** ** 수동으로 **/usr **에서 수동으로 찌르지 않는다. 필요한 경우 소프트웨어를 $ {HOME} 어딘가에'- prefix '할 수 있지만'/ usr'은 패키지 관리자의 유일한 도메인이어야합니다. 나중에 문제가 생길 수 있습니다 ** (예 : 패키지 관리자가'/ usr'에 수동으로 넣은 파일을 수동으로 제거하거나 덮어 쓸 때). – DevSolar

+0

편집을보고 나면 복사가 올바른 방법이 아니 었음이 분명합니다. 문제는'make install'을 실행 한 후 올바른 절차가 무엇인지 정확히 모르겠습니다. 왜냐하면 그걸로는 효과가 없었기 때문입니다. – Innkeeper