내 필요에 맞게 구성한 후 소스에서 bacula 9.0.6을 컴파일하고 있습니다.
./configure --with-readline=/usr/include/readline --disable-conio --bindir=/usr/bin --sbindir=/usr/sbin --with-scriptdir=/usr/libexec/bacula/ --with-working-dir=/var/spool/bacula/ --with-logdir=/var/log --enable-smartalloc --with-mysql [email protected] --with-hostname=192.168.0.4
그럼 난 달려보려고 해
make -j8
하지만 잠시 후 다음과 같은 오류가 발생합니다.
/bacula-9.0.6/libtool --silent --tag=CXX --mode=link /usr/bin/g++
-o libbaccats-mysql.la mysql.lo -export-dynamic -rpath /usr/lib64 -
release 9.0.6 \
-soname libbaccats-9.0.6.so -L/usr/lib64/ -
lmariadb -lnsl -lz -ldl -lm -lpthread -lssl -lcrypto
/usr/bin/ld: cannot find -lmariadb
collect2: error: ld returned 1 exit status
make[1]: *** [libbaccats-mysql.la] Error 1
make[1]: Leaving directory `/bacula-9.0.6/src/cats'
====== Error in /bacula-9.0.6/src/cats ======
이유를 모르겠습니다. mariadb-devel을 포함하여 최신 버전의 MariaDB(mysql)를 설치했습니다. 나는 라이브러리를 검색해 보았지만(라이브러리 위치와 /lib/ 디렉토리 사이에 심볼릭 링크를 만들 것을 제안하는 사람을 인터넷에서 검색) 아무것도 찾지 못했습니다. 저는 MySql 전문가가 아니며 온라인에서 유용한 정보를 찾지 못했습니다. 그래서 저는 여러분에게 묻습니다. 소스 코드를 컴파일할 때 오류를 해결하는 방법은 무엇입니까?
미리 감사드립니다!
답변1
해결되었습니다! 나는 이것이 동일한 위치에 mariadb.a라는 이름의 /usr/lib64/mariadbclient.a 사본을 생성하기에 충분하다는 것을 알았습니다. 물론 파일 이름을 직접 바꾸는 것보다 복사본을 만드는 것이 중요합니다. 처음에는 /baculasrc/src/cats의 Makefile에서 라이브러리 이름을 제거하면 충분할 것이라고 생각했지만 설치 후 bacula 환경에서 일부 구성 요소가 누락되었습니다. 정확히 말하면 최신 버전의 MariaDB에서 일부 라이브러리의 이름 업그레이드 문제입니다. 또는 원본 라이브러리 파일에 대한 심볼릭 링크를 만들 수 있습니다.