分类 Ubuntu 下的文章

“Ubuntu是以桌面应用为主的Linux发行版,基于Debian。Ubuntu有三个正式版本,包括桌面版、服务器版及用于物联网设备和机器人的Core版。从17.10版本开始,Ubuntu以GNOME为默认桌面环境。 Ubuntu是著名的Linux发行版之一,也是目前最多用户的Linux版本。 ”

下最新的CMake了。

1. 查看现有的cmake版本

cmake --version
卸载现有版本的cmake,也有人建议不用删除,之后更新软链接即可。
sudo apt remove cmake

下载目标版本的CMake,官网链接 https://cmake.org/download/,找到目标版本的 “.sh” 文件。下载后拷贝到/opt/文件夹下。
wget https://github.com/Kitware/CMake/releases/download/v3.21.3/cmake-3.21.3-linux-x86_64.sh
cp cmake-3.21.3-linux-x86_64.sh /opt/

修改 “.sh” 文件权限。
chmod +x /opt/cmake-3.21.3-linux-x86_64.sh

安装cmake。
sudo bash /opt/cmake-3.21.3-linux-x86_64.sh

过程中需要多次点击回车,然后输入两次Y。

将cmake文件软连接到bin。

sudo ln -s /opt/cmake-3.21.3-linux-x86_64/bin/* /usr/bin
安装成功后,输入以下指令查看cmake版本。
cmake --version

Referenced from:https://blog.csdn.net/iLOVEJohnny/article/details/103681032

编译的解决方法:

sudo apt remove cmake
sudo apt-get install build-essential libssl-dev
wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0.tar.gz

tar -zxvf cmake-3.20.0.tar.gz
cd cmake-3.20.0
./bootstrap
make
sudo make install
cmake --version

使用GDB。

gdb -batch -ex bt -p 1234

其中1234为进程id

可以打印出来信息,看程序停在什么地方。

运行strace,

strace -s 99 -ffp 12345
进程ID为12345。这将向您显示该程序正在执行的所有系统调用。

Ubuntu16.04下安装FFmpeg
不要手动下载安装。但某些功能可能没有。基本够用了,如果需要某些特定功能,还是需要下载编译安装。

第一步:添加源。
sudo add-apt-repository ppa:djcj/hybrid
第二步:更新源。
sudo apt-get update
第三步:下载安装。
sudo apt-get install ffmpeg
如上,就安装好了~
Referenced from:https://blog.csdn.net/lwgkzl/article/details/77836207

静态库没有fPIC编译, 只要在configure时加上--enable-shared即可, 即: ./configure --enable-shared

编译opencv4.5.3的时候出现错误

/usr/bin/ld: /usr/local/lib/libavcodec.a(vc1dsp_mmx.o): relocation R_X86_64_PC32 against symbol `ff_pw_9' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: 最后的链结失败: bad value
collect2: error: ld returned 1 exit status
make[2]: * [modules/world/CMakeFiles/opencv_world.dir/build.make:8801:lib/libopencv_world.so.4.5.3] 错误 1
make[1]: * [CMakeFiles/Makefile2:2093:modules/world/CMakeFiles/opencv_world.dir/all] 错误 2
make: * [Makefile:163:all] 错误 2

将ffmpeg换成动态库编译就可以了。

git clone https://github.com/intel/gmmlib.git

正克隆到 'gmmlib'...
remote: Enumerating objects: 2533, done.
remote: Counting objects: 100% (295/295), done.
remote: Compressing objects: 100% (195/195), done.
remote: Total 2533 (delta 154), reused 203 (delta 100), pack-reused 2238
接收对象中: 100% (2533/2533), 1.84 MiB | 1.12 MiB/s, 完成.
处理 delta 中: 100% (1569/1569), 完成.

cd gmmlib
mkdir build && cd build
cmake ..
make -j4
等待一段时间编译,不错就行。
sudo make isntall