linux 下编译,区分程序、库是debug还是release版本。同时以编译freetype为例


在linux里面怎么区分debug和realease版本
1、使用 readelf -S filename            //filename这里指的是你想要查看的程序,或者库
    如果是debug版本的话,你会看到很多debug相关的信息。
    如果是release版本的话,按理说是看不到debug信息的。//但是我使用交叉编译链编译程序后,会看见 .debug_frame
    注:因此,这种区分方式好像有一定的道理,具体怎样,后面还要去详查
2、使用 gdb filename                    //filename这里指的是你想要产看的程序,或者库
    如果是debug版本的话,最后会提示:Reading symbols from filename...done 相关信息    //filename这里指的是你想要产看的程序,或者库
    如果是release版本的话,最后会提示:no debugging symbols found
    注:这种区分方式应该比较靠谱。因为gdb需要调试相关的信息,如果不是debug版本,那么就提供不了相关的信息。


在linux里面编译debug和realease版本
在linux里面,使用编译器的时候,默认没有 -g 的选项,也就是默认编译成release版本。(目前我使用过的编译器都是这样,特殊的,暂时没有遇到)
如果想要编译debug版本的话,那么需要加入-g的选项。

举个例子:
    我在一直freetype这个开源工具的时候,我使用交叉编译链进行编译的时候,编译出来的竟然是debug版本。
    后面去根据信息找到了原因。是freetype这个开源工具的源代码,它里面有个配置文件。在编译之前会检测你的编译器是否支持-g选项,如果支持,那么它就给你加上了。
    顺带说一下这里怎么修改的:我使用的是: freetype-2.8.1 版本。在它的主目录下有个 builds/unix/  ,里面有一个configure文件。在里面搜索 CFLAGS="-g
    会有好几处都有这样的设置,我们想要release版本,那么就去掉-g选项。然后编译出来的就是release版本了
    注:1、因为我的目标板是arm,所以这里进入的是unix目录
        2、所有 CFLAGS="-g  这里只写了左边的引号,是因为还要 CFLAGS="-g -O2" 这样的存在。最稳妥的是搜索 -g 。只是这样搜索出来的太多了。

下面附录编译的过程,给自己留个备份:

1、获得压缩包后,解压压缩包,进入freetypr主目录
2、配置./configure  ./configure CC=arm-linux-gnueabihf-gcc --host=arm-linux --prefix=$PWD/INSTALL --with-zlib=no --with-png=no
    注:这里需要指定自己的编译器等信息。
3、如果要更改为release版本,则去修改builds/unix/configure文件。 去掉 CFLAGS="-g..."  里面的 -g 选项
    如果不更改,第三步忽略。
4、进入freetypr主目录 执行 make
5、执行 make install
6、进入主目录下面的INSTALL/lib目录下。这个时候就能找到我们编译后生成的 freetype 库了。(动态和静态库都在这里)

 

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
在Windows平台上交叉编译Qt 5.14.2至树莓派,需要进行以下步骤: 1. 安装交叉编译工具链 首先需要在Windows上安装树莓派的交叉编译工具链。可以从树莓派官网下载对应版本的工具链,并将其添加到环境变量中。 2. 下载Qt源码 从Qt官网下载Qt 5.14.2的源码,并解压到本地路径。 3. 配置Qt编译环境 在Qt源码目录下打开命令行窗口,执行以下命令: ``` ./configure -release -opengl es2 -device linux-rasp-pi3-g++ -device-option CROSS_COMPILE=<path-to-toolchain>/bin/arm-linux-gnueabihf- -sysroot <path-to-sysroot> -prefix /usr/local/qt5pi -opensource -confirm-license -skip qtscript -skip qtwayland -skip qtwebengine -skip qtwebview -skip qtwebchannel -skip qtxmlpatterns -skip qtwebsockets -skip qtwebglplugin -skip qtgamepad -skip qtvirtualkeyboard -skip qtpurchasing -skip qtnetworkauth -no-use-gold-linker -make libs -make tools -no-gbm -no-eglfs -no-directfb -no-kms -no-xcb -no-opengl -no-gtk -no-iconv -no-feature-freetype -no-feature-fontconfig -no-feature-harfbuzz -no-feature-journald -no-feature-system-proxies -no-feature-testlib -no-feature-xml -no-feature-xmlpatterns -no-feature-tz -no-feature-forkfd -no-feature-shared-memory -no-feature-dbus -no-feature-accessibility -no-feature-openssl -no-feature-sqlite -no-feature-sqlite2 -no-feature-mtdev -no-feature-evdev -no-feature-input -no-feature-pcre -no-feature-pcre2 -no-feature-glib -no-feature-zlib -no-feature-libjpeg -no-feature-libpng -no-feature-libmng -no-feature-libtiff -no-feature-freetype -no-feature-harfbuzz -no-feature-gstreamer -no-feature-alsa -no-feature-pulseaudio -no-feature-qml-debug -no-feature-qml-tracing -no-feature-debug ``` 其中,`<path-to-toolchain>`是交叉编译工具链的路径,`<path-to-sysroot>`是树莓派系统根目录的路径。 执行完该命令后,将生成一个`Makefile`文件。 4. 编译Qt 在Qt源码目录下执行以下命令: ``` make ``` 该命令会编译Qt源码,并将编译结果安装到`/usr/local/qt5pi`目录下。 5. 传输Qt库文件到树莓派 将`/usr/local/qt5pi`目录下的库文件传输到树莓派上。 6. 在树莓派上使用Qt 在树莓派上进行Qt开发时,需要在程序中指定Qt库文件的路径。可以通过在程序中设置环境变量`LD_LIBRARY_PATH`来指定Qt库文件路径,或者在程序中使用`QCoreApplication::addLibraryPath()`函数来添加Qt库文件路径。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

monkey_llll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值