如何解决类似的“链接 CXX 可执行文件”问题

如何解决类似的“链接 CXX 可执行文件”问题

我尝试编译以获得非洲菊,一个流行的 DLNA 服务器运行失败。依赖项似乎没问题。文档没有提到需要的任何 make 标志。所以当我尝试 make 时,构建达到 100%,然后失败

[100%]链接 CXX 可执行文件 gerbera
并带有以下消息:
/usr/bin/ld: liblibgerbera.a(sqlite_database.cc.o): 对符号‘sqlite3_mprintf’未定义引用
/usr/bin/ld: /lib/x86_64-linux-gnu/libsqlite3.so.0: 添加符号时出错:命令行中缺少 DSO
铛:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
make[2]: *** [CMakeFiles/gerbera.dir/build.make:98: gerbera] 错误 1
make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/gerbera.dir/all] 错误 2
make:*** [Makefile:130:全部] 错误 2
我不熟悉此类问题,所以如果有人能向我解释或帮助我解决该问题,我将不胜感激

答案1

我尝试按照标准说明进行构建,也发现了问题。不过,我最终还是成功构建了它,如下所示:

安装依赖项

sudo apt install uuid-dev libsqlite3-dev libmysqlclient-dev libmagic-dev libexif-dev libcurl4-openssl-dev libspdlog-dev libpugixml-dev libavutil-dev libavcodec-dev libavformat-dev libavdevice-dev libavfilter-dev libavresample-dev libswscale-dev libswresample-dev libpostproc-dev duktape-dev libmatroska-dev libsystemd-dev libtag1-dev libfmt-dev ffmpeg git cmake autoconf libtool

构建/安装 spdlog

在第一次“配置”时,我收到一条消息,指出与 Ubuntu 提供的 spdlog 会发生冲突。在这里,我们构建并安装自己的 spdlog,并设置正确的标志。

git clone https://github.com/gabime/spdlog
cd spdlog
cmake -D "SPDLOG_FMT_EXTERNAL:BOOL=true" .
make
sudo make install

下载非洲菊

git clone https://github.com/gerbera/gerbera.git

构建/安装 libupnp

Ubuntu 提供的库太旧了,所以我们需要构建并安装新版本。gerbera 源提供了一个脚本来帮我们完成这一操作。

cd gerbera/scripts/
chmod +x install-pupnp.sh
sudo ./install-pupnp.sh

建造/安装非洲菊

从包含您下载的非洲菊根文件夹的文件夹中:

mkdir build
cd build
cmake -DWITH_MAGIC=1 -DWITH_MYSQL=1 -DWITH_CURL=1 -DWITH_JS=1 -DWITH_TAGLIB=1 -DWITH_AVCODEC=1 -DWITH_EXIF=1 -DWITH_LASTFM=0 -DWITH_SYSTEMD=1 ../gerbera
make
sudo make install

当我在全新安装的 Ubuntu 20.04 上尝试时,上述操作均有效。

选择

如果你不想自己构建 gerbera,可以使用 Ubuntu PPA。因此,你可以按如下方式轻松安装 gerbera:

sudo add-apt-repository ppa:stephenczetty/gerbera-updates
sudo apt-get update
sudo apt install gerbera

相关内容