본문 바로가기

Programming/C & C++43

Tips for C++ compiling Issues GCCFix LD_LIBRARY_PATH at compile time”-rpath ” or “-Wl,-rpath,” 1$ gcc -lstdc++ -lz -lpthread -o test test.o -Wl,-rpath,/sample/dynamic/library/path General TipsCheck the dependency of dynamic library ( .so file ) 1$ ldd sample.so 2013. 7. 31.
MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __stat64i32이(가) LIBCMTD.lib(stati32.obj)에 이미 정의되어 있습니다. 본인이 접한 이번 에러의 케이스는 총 2가지 2가지 모두 라이브러리에 해당하는 모듈과 그걸 이용하는 바이너리 모듈 빌드시 빌드 옵션의 차이로 인해 발생하는 에러. 빌드 방식을 통일하거나, 바이너리 모듈 빌드시 차이를 포괄할 수 있는 옵션을 사용하면 된다. 연관 빌드 옵션 Runtime Library 옵션 : /MTd /MD /MT 등등 ( 참조링크 )DEBUG/RELEASE 옵션 하나는, 라이브러리에 해당하는 것을 DEBUG 모드로 빌드하고 그걸로 바이너리를 만드는 빌드시스템에서는 RELEASE로 해서 에러 발생. 이는 둘다 빌드 모드를 맞춤으로 해서 해결함. 다른 하나는 Runtime Library 사용에 대한 옵션 차이로 인해 발생한 에러. 이쪽도 빌드 옵션을 맞춰서 해결하였음. 참고로 재배포 패키지.. 2012. 11. 29.
shell.c(332) : error C2440: '=' : 'void *'에서 'char *'(으)로 변환할 수 없습니다. 'void*'에서 'void'가 아닌 포인터로 변환하려면 명시적 캐스트가 필요합니다. 멀티플랫폼을 고려한 빌드 시스템을 고려할 때 윈도우 쪽에서 발생할 수 있는 이슈. 윈도우 컴파일러에서 c용 컴파일러로 돌려야 하는데 CPP용의 엄격한 룰체크 기반의 컴파일러로 돌아가서 그런다. 대부분의 경우에는 파일의 확장자를 보고 자동으로 동작하지만, 제대로 동작하지 않을 경우 명시적으로 C소스파일을 지정하는 옵션( /Tc 또는 /TC )을 넣어야 한다. 2012. 8. 28.
thrift 에서 C++ library 가 설치가 안되는 경우 Building C++ Library ......... : no 가 나온 경우 필수 라이브러리가 설치가 안되있거나 configure에서 인식을 못하는 경우 두가지가 있다. 필수라이브러리 목록은 여기( http://thrift.apache.org/docs/install )를 참고하면 된다. BOOST library를 기본 경로에 설치하지 않고 자기계정의 특정 디렉토리에 설정한 경우 $BOOST_ROOT에 설치된 경로를 넣고 configure 실행시 --with-boost=$BOOST_ROOT 라고 입력하면 C++ libary가 잡히게 된다. 2012. 8. 27.