linux g++ 环境编译配置笔记

ubuntu 快捷键:
Alt + Tab 切换不同应用, Alt + ` 切换相同应用

ubuntu 安装软件 sudo apt install libjpeg 按Tab显示匹配
apt search libjpeg 查找匹配

apt-file 查找头文件所在库


libtool | automake | autoconf | net-tools

sudo apt-cache search x11-dev

make -n

先把apt-file装上并更新一下数据
apt-file search 'xcb/xcb_image.h'

在win下编辑的时候,换行结尾是\n\r , 而在linux下 是\n,所以才会有 多出来的\r
sed -i 's/\r$//' configure

查看某个库是否安装命令:
ldconfig -p | grep pcap

cario 入门
https://www.cairographics.org/FAQ/#compilation_flags

cc -o hello $(pkg-config --cflags --libs cairo) hello.c

pkg-config --cflags --libs cairo

1)在/tmp中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名
A) find   /tmp   -name   "*.h"   | xargs   -n50   grep SYSCALL_VECTOR
B) grep   SYSCALL_VECTOR   /tmp/*.h | cut    -d’:'   -f1| uniq > filename
C) find   /tmp   -name "*.h"   -exec grep "SYSCALL_VECTOR"   {}   \; -print

命令行\桌面模式切换
Alt+Ctrl+F3 打开命令行
Alt+Ctrl+F1 打开图形桌面模式

sftp 配置 https://blog.csdn.net/yanzhenjie1003/article/details/70184221/

zip -r xxx.zip ./*

命令行启动桌面
startx或者init 5

一般这两个命令是进入图片界面的

To reconfigure, run 'make confclean' and 'configure'.

清除配置
make distclean
配置储存文件
Info: creating stash file .stash
config.cache
多线程: make -j4

$ echo "libc_cv_forced_unwind=yes" > config.cache
$     
${GLIBC_DIR}/configure [options] --cache-file=config.cache

uname -a 查看系统版本
    
sudo apt-get install libegl1-mesa libgles2-mesa

//重新安装桌面
sudo apt-get update
sudo apt-get install --reinstall ubuntu-desktop
sudo apt-get install unity
sudo shutdown -r now

g++ 链接顺序有关系,有向后查找依赖的特点

查看导出函数
nm -D /lib64/libharfbuzz.so.0 | grep FT_Get
                 U FT_Get_Advance
                 T FT_Get_Char_Index
U表示外部符号,T表示内部符号

readelf   -d   xxx(目标文件/命令)    查看xxx使用的动态库

依赖关系:
将依赖的包及相应的软连接拷贝到部署机的任意目录下,并设定环境变量LD_LIBRARY_PATH,这些依赖包列表可以通过ldd命令查询

解决qt5无法输入中文 fcitx :
 下载 https://github.com/fcitx/fcitx-qt5
 CMake配置,依赖:
 cmake fcitx-qt5时报错
    "ECM":  解决: sudo apt install extra-cmake-modules
    Qt5Config.cmake 解决: Add the installation prefix of "Qt5" to CMAKE_PREFIX_PATH or set "Qt5_DIR"
    
复制自动确认不替换
shell>awk 'BEGIN { cmd="cp -ri a1/* a2/"; print "n" |cmd; }'

查看进程加载模块
# cat /proc/12345/maps | awk '{print $6}' | grep '\.so' | sort | uniq
 

编译工具
sudo apt-get install build-essential

gtk-2.0
sudo apt-get install libgtk2.0-dev

cairo2
sudo apt-get install libcairo2-dev

安装SDL2_image使用的图像开发库
sudo apt install libjpeg-dev
sudo apt install libwebp-dev
sudo apt install libtiff-dev

SDL2,SDL2_Image 自己编译
在SDL2解压目录使用如下命令安装:
mkdir build && cd build && ../configure CFLAGS='-fPIC' && make && sudo make install

SDL2_Image编译安装
mkdir build && cd build && \
    ../../SDL2_image-2.0.4/configure CFLAGS='-fPIC' LDFLAGS="-Wl,-rpath=\'\$\$\ORIGIN\'" \
    && make && sudo make install

Qt
sudo apt-get install io.qt.qtcreator 或 qtcreator
sudo apt-get install qt4-default
sudo apt-get install qt5-default

CMAKE工具
sudo apt-get install cmake

cmake使用方法:
mkdir build && cd build && mkdir OfdParser && cd OfdParser && cmake ../../OfdParser && make && sudo make install

编译输出时指定rpath = $ORIGIN(应用程序、库 可在同文件夹查找依赖库文件)
../configure CFLAGS='-fPIC' LDFLAGS=-Wl,-rpath=\'\$\$\ORIGIN\'
QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\'

Qt设置插件所在文件夹\目录
QApplication aApp(argc,argv);
QApplication::setLibraryPaths(QStringList(QCoreApplication::applicationDirPath()+"/plugins/"));
在调用 QCoreApplication::applicationDirPath() 前,必须先创建一个 QApplication的对象

UOS下遇到的libcurl库运行时报错问题目前的解决方法:
可能原因:suwell数科阅读器运行时会自动加载阅读器目录的 libcurl.so.4 
        此库与libAztNet使用的libcurl.so.4、libssl.so.1.1、 libcrypto.so.1.1可能冲突
解决方法:
        1、复制系统的libcurl.so.4等三个库出来到一个单独的文件夹,并修改名字为 libM*.so(添加一个M代表自己用的库)。
        2、利用patchelf工具(可由命令行安装)修改此三个库的 SONAME、依赖库名称、rpath 如下方法:
            patchelf --set-soname libMcurl.so.4 libcurl.so.4
            patchelf --set-rpath /opt/DZQZ/lib libcurl.so.4
            patchelf --replace-needed libcurl.so.1.1 libMcurl.so.1.1 libMcurl.so.4
            查看SONAME、依赖关系的方法: readelf -d 库文件名
            查看库中符号 nm -D 库文件名
        3、编译的时候 makefile 链接库的选项使用: -lMcurl
          
 

GCC添加ORIGIN路径:
​​​​​​​g++ LDFLAGS="-Wl,-rpath=\'\$\$\ORIGIN\'" \

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值