调试 configure

告别Qt Creator!VSCode+Qt Configure插件开发实战:从项目创建到调试全流程 本文详细介绍了如何利用VSCode和Qt Configure插件搭建高效的Qt开发环境,实现从项目创建、编译配置到调试的全流程。通过对比Qt Creator,文章阐述了VSCode在灵活性和定制化方面的优势,并提供了环境配置、插件使用、构建系统选择及高级调试技巧等实战指南,帮助开发者顺利迁移并提升开发效率。 阅读详情

http://www.ibm.com/developerworks/cn/linux/l-debcon/index.html

 

程序不能编译时怎么办



级别: 初级

Peter Seebach (developerworks@seebs.plethora.net), 自由作家

2003 年 12 月 01 日

通 常,在软件包的 README 文件中只能找到非常简单的“编译说明:运行 configure,然后运行 make”。但是,这样行不通时怎么办?在本文中,Peter Seebash 讲述了当自动的配置脚本失效时应该如何去做——以及作为开发者您应如何尽量避免这种错误。毕竟,如果您的程序无法编译,其结果将和您的程序编译后不能运行 一样,您的用户会减少。

现在许多开放源代码的程序都会附带有 configure 脚本。这种脚本的用途之一是自动进行对目标新系统的猜测过程。在过去,程序会附带一个 Makefile 文件,这个文件中有 6 个不同的编译标记和选项,但只会用到一个,其余全部注释掉,并且会有一个注解,告诉您“为您的系统选择合适的标记”。如果配置选项更复杂,可能还会有一个 名为 config.h 的长长的 C 头文件,其中包含一些要设置的标记,这依赖于主机系统变量。

第一个方法很简单,在代码中使用 #ifdef 以支持两种系统,例如 BSD 和 System V。由于 Unix 的类型的增加,更为实用的方法是对每一个特性使用 #ifdef 。每个系统的代码如下:


清单 1. 每个系统的代码
    #ifdef SUNOS4 || NEXT || NETBSD || FREEBSD || OPENBSD
#include <string.h>
#else
#include <strings.h>
#endif

每个特性的代码如下:


清单 2. 每个特性的代码
    #ifdef HAS_STRING_H
#include <string.h>
#else
#include <strings.h>
#endif

后者更容易适应新系统,但需要开发者进行大量的工作。由于现在有太多可能的目标系统,因此,第二种方法对用户来说帮助很大,不仅仅是可以自动生成配置头文件。完成这项任务的一种方法是使用 GNU autoconf 代码来生成 configure 脚本。这个脚本会去执行必要的测试,并创建一个具有适当值的配置头文件。

这 种脚本的另一个功能是以一致的方式设置预定义的变量。用手工编辑标记一直存在一个问题,即修改了 Makefile 文件(比如将其安装到 /usr/gnu 而不是 /usr/local 目录下)却忘记修改头文件中相应的值。当然,这样的结果是,编译后的程序不知道到哪里去寻找它们自己的数据文件。使用 configure 脚本的一个好处是可以自动完成一致的安装(如果维护者做得没错的话)。

开发人员请注意,一个好的 configure 脚本的另一个好处在于,它会允许用户指定一些个人偏好,例如使用 /usr/gnu 而不是 /usr/local。

最后, configure 脚本可以完成大量猜测工作,即安装了哪些可选软件包或缺少哪些必要条件。例如,一个设计运行于 X Window System 的程序需要知道 X 安装在哪里,或者甚至要知道 是否安装了 X。

这些如何成为可能?





回页首


编译,再编译

configure 的许多功能实现机制其实很简单。为了能切身体会,您可以设计一个小测试程序,这个程序当且仅当期望的条件得到满足时才可以编译。将它保存在一个临时文件 中,然后尝试编译它。例如,假定您想知道 X Windowing System 是否安装在 /usr/X11R6 目录下。一种方法是做一个如下的测试程序:

#include <X11/X.h>
int main(void) { return 0; }

现在,如果您用编译器来尝试进行编译,那么只有当 <X11/X.h> 在编译器的 include 路径中时,编译才会成功。因此,对每一个您认为 X 可能安装到的目录,可以将对应的 (directory)/include 加入到编译器的 include 路径中,并尝试对程序进行编译。如果采用某个值时示例文件可以编译,那么您就得到了正确的 include 路径。

请注意在 autoconf 中已经预定义了各种测试程序。如果可能,就直接使用这些测试程序,而不用自己去写。这样有很多好处。首先, autoconf 的新版本会改进这些测试程序,修正它们的错误,否则您将不得不自己去做这些工作。其次,这样会节省您的时间。当然,更好的方法是完全避免测试。如果您确认某一个测试是没有必要的(例如,即使机器字节多于 8 位也仍需要使 sizeof(char) 为 1),您可以完全不去进行这个测试。

有一些测试是功能测试;它不足以确定是否存在一个名为 memcmp() 的函数,它的语义必须正确。通常,这些测试用于只是在一两个平台上被注意到的非常不明显的错误。这些测试实际上会去运行测试程序,并检查它的输出。测试程序遵循标准的 Unix 习惯:如果测试通过则返回值为 0,如果失败则返回一个非 0 值。

一旦您有了足够的测试程序,您可以用它们来自动确定必需的编译标记和定义,以将它们放到头文件的某个地方。通常, configure 脚本会允许用户给出部分或全部已知的条件,而不是让脚本自己去猜测。

来看一个特例,假定,系统的 broken memmove() 出现了问题。如果您不知道它现在有一个只会影响少部分程序的 bug,您可能会编译一个程序并将其发布为产品,而没有意识到这样您将会遇到偶然的灾难性错误。

在许多情况下,一个冗长而复杂的 configure 脚本的最终结果是这样的:目标系统提供了这个程序用到的每一个标准特性,而且它们正确工作。在这种情况下为什么不手工去设置这些标记呢?这对开发者来说是 可行的,而对众多用户来说就不可以了。用户可能不会知道到他们的 Linux 版本存在特定的 bug。他们可能不知道已经安装了哪些软件包,或者安装到了何处。脚本帮那些最需要帮助的人来完成大部分的例行公事的工作。当脚本出错时,引发的额外工作 的代价可能不会太大。





回页首


错在何处?

既然您已经基本上了解了 configure 都做了些什么工作,您可以开始寻找错误了。有两种可能的 configure 错误。一种是 configure 是正确的,而您的系统缺少必要的先决条件。绝大多数情况下, configure 脚本会正确诊断出这种错误。更为麻烦的情况是 configure 本身的错误。这样的结果或者是不能生成配置,或者生成一个不正确的配置。

当 configure 的猜测无误,而您缺少先决条件时,您所要做就是要满足缺少的那些先决条件。当您找到并安装好后,再重新运行那个报告缺少先决条件的 configure 脚本,就可以成功了。(不要忘记删除 config.cache 文件,这个文件缓存了上一次测试的结果;您应该让 configure 从头开始。)

如果您正在开发 configure 脚本,您需要确保您给出的错误消息有意义。如果您测试的是一个函数,而这个函数是一个常见的可添加的软件包的一部分,那么不要告诉用户缺少的函数的名称 —— 告诉用户他们需要的软件包。确保将先决条件信息写入 README 文件中。并且,请一定要告诉人们您测试使用的其他软件包的版本号。

当然,即使在先决条件需要的软件安装以后,configure 脚本可能还是找不到新安装的程序。在这种情况下,您又回到了当 configure 猜测错误时应该如何去做。

阅读文档

无论何时,当 configure 失败时您首先要做的是运行 configure -h ,并检查参数列表。如果它找不到您确认已经安装的库,您可能可以指定到另一个位置来找到这个库。您还可以禁用和启用某些特性。例如,用于 Angband (一个 Roguelike 游戏)的 configure 脚本有一个可选的标记 —— enable-gtk ,以告诉脚本在编译时启用 GTK 支持。如果没有这个标记,编译时根本不会去尝试。

如果您的系统配置得比较奇怪,您可能不得不为 configure 脚本设置一些非常详细的变量,而且如果是在交叉编译,您很可能得做一些非常特别的事情。 CC 是 configure 用于指定 C 编译器的变量,通过指定 CC 的值可以解决许多问题。如果您指定了编译器, configure 将使用那个编译器而不用去猜测需要使用哪一个。要注意的是,这样您可以在命令行中指定选项和标记。例如,如果您希望编译时支持调试符号,尝试:

CC="gcc -g -O1" ./configure

(这里假定您使用的是 sh 系列的 shell;在 csh 中,用 setenv 来设置环境变量 CC 。)

阅读 config.log

当 configure 脚本运行时,它会创建一个名为 config.log 的文件,其中记录的是测试日志和得到的结果。例如,一个典型的 config.log 片断如下:


清单 3. config.log 的典型内容
    configure:2826: checking for getpwnam in -lsun
configure:2853: gcc -o conftest -g -O2 -fno-strength-reduce conftest.c -lsun >&5
ld: cannot find -lsun
configure:2856: $? = 1
configure: failed program was:
(a listing of the test program follows)

如果我的系统中, -lsun 应该提供 getpwnam() ,我应该可以使用命令行来对其进行确切检查,然后再使用测试程序。只需进行少量这样的调试,我就可以根据得到的信息来修改 configure 脚本。请注意有帮助的行号;这个测试从 configure 脚本的第 2,826 行开始。(如果您是一个 shell 程序员,您可能会喜欢在阅读 configure 脚本片断时打印出行号;在 shell 中 $LINENO 不能自动地被扩展为合理值,脚本使用 sed 创建一个包含有行号的自身拷贝!)

当一个测试失败或者得到意外的结果时,最好先去读一读日志文件。请注意,有时测试失败仅仅是因为上一个测试的失败,这种失败实际上并不重要。例如, configure 可能会因为找不到一个您闻所未闻的库而退出,而这可能是因为测试标准 C 库中某个功能的程序失败而导致无法找到那个库。在这种情况下,只需要解决第一个问题,第二个问题也就不会再出现了。

有 bug 的测试程序

在其他一些情况下, configure 可能会偶而出现猜测错误。一种情况是测试程序设计不正确而可能在一些系统中编译失败。例如,考虑如下用于判断 strcmp() 函数可用性的测试程序:


清单 4. strcmp() 可用性测试程序
    extern int strcmp();
int main(void) {
strcmp();
}

编写这个程序是为了避免使用 <string.h> 头文件。这样做的意图是,如果 strcmp() 在库中可以找到,程序将可以被正确地编译和链接;如果没有找到,链接器将不能解析到 strcmp() 的引用,程序编译就会失败。

在 UnixWare 编译器的某一个版本中,对 strcmp() 的引用被自动转换为 Intel 处理器自己的字符串比较指令。这个过程只是将传递到 strcmp() 的参数替换到一行汇编代码中。不幸的是,前面的例子程序调用 strcmp() 时没有给出参数,因此生成的汇编代码无效,从而导致编译失败。实际上您可以使用系统中的 strcmp() ,但是测试程序错误地认为缺少这个函数。

当 autoconf 的目标为主流平台(特别是各种 Linux,但是还包括主要的 Unix 发行版本)时,极少出现有 bug 的测试,这种有 bug 的测试通常是在那些没用被广泛测试过的平台或编译器上运行测试的结果。例如,UnixWare 上的 gcc 不会发生前面的 bug;只是在使用系统本身的开发包进行编译时才会发生。通常,最简单的解决办法是在 configure 中注释掉相应的测试,并直接设置出问题的环境变量。

编译器不真正工作

有时 configure 前阶段选择的编译器标记可以链接可执行文件,但最终生成的可执行文件却不能运行,这是一个特别致命的错误。这会导致测试无缘无故地失败。例如,如果您使用的链接器命令是错误的,虽然您可能会正确地进行了链接,但却不能运行。到完成本文时, configure 脚本还不能发现这一错误,所以只有那些需要目标程序运行的测试才会报告失败。这对调试来说是非常不可思议的,但是通过 config.log 脚本可以弄明白是哪里出了问题。例如,在一个测试系统中,我得到了这样的输出:


清单 5. 测试 config.log 输出
 
configure:5644: checking for working memcmp
configure:5689: gcc -o conftest -g -O2 -fno-strength-reduce
-I/usr/X11R6/include -L/usr/X11R6/lib conftest.c -lXaw -lXext
-lSM -lICE -lXmu -lXt -lX11 -lcurses >&5
configure:5692: $? = 0
configure:5694: ./conftest
Shared object "libXaw.so.7" not found
configure:5697: $? = 1
configure: program exited with status 1

真正错误在于,编译器需要一个单独的标记来告诉它 /usr/X11R6/lib 需要在搜索目录列表中出现,这样在运行时才可以找到动态链接库。无论如何,这是第一个这样的测试,它真正运行编译过的测试程序,而不是程序编译成功后就停止。这是一个非常精妙的问题。

在这个系统中,解决的方法是添加

-Wl,-R/usr/X11R6/lib

到 CFLAGS 变量中。命令行:

$ CFLAGS="-Wl,-R/usr/X11R6/lib" ./configure

允许 configure 正确地运行这个测试。

这对交叉编译尤其不利,因为您可能不能运行实际上是由交叉编译器创建的可执行程序。最近的 autoconf 版本都尽量避免要求测试程序实际运行的测试。

找到缺少的库和 include

使用 configure 脚本的另一个常见的问题是,如果一个特定的软件包安装到了一个非常规的位置, configure 将无法找到它。好的 configure 脚本通常允许您指定所需要的文件的路径,因为它们可能被安装到与众不同的位置。例如,许多 configure 脚本用一个标准的方法来告诉脚本到何处去寻找 X 库:


清单 6. 寻找 X 库
    X features:
--x-includes=DIR X include files are in DIR
--x-libraries=DIR X library files are in DIR

如果这样仍不行,您还可以尝试使用完全强制的方法:指定需要的编译器标记为您的 CC 环境变量或者是 CFLAGS 环境变量的一部分。

其他技巧

如果开发者给出了 autoconf 用于生成 configure 脚本的 configure.in 文件,一个工作区将运行最新版本的 autoconf 。可能这样就可以了,但即使不能很好地工作,这也可以解决一些问题。这样做的目的是更新用到的特定测试;它在旧版本的 configure 中可能就是一个引发问题的 bug。就此而言,如果您是这种情形下的开发者,请一定要发布您所用到的 configure.in 文件。

如果您经常要反复调整您传递到 configure 的参数,而且您并不擅长 shell 命令行编辑,那么可以做一个包装器脚本,这个脚本以适当的参数调用 configure 。经过一些调整和一些失败的测试后,您的脚本可能会是这样:


清单 7. 包装器脚本
    ./configure --with-package=/path/to/package /
--enable-widget /
--disable-gizmo /
--with-x=29 /
--with-blah-blah-blah
CFLAGS="-O1 -g -mcpu=i686 -L/usr/unlikely/lib /
-I/usr/unlikely/include -Wl,-R/usr/unlikely/lib"

相对于一遍又一遍地在命令行中输入,将脚本放在一起将很方便 —— 而且以后您还可以引用它,或者将它的一个拷贝寄给别人。





回页首


开发健壮的 configure 脚本

一分预防胜似十分治疗。要使 configure 脚本工作的最好方法就是在生成它的时候尽力确保它不会出错。

当尝试构建一个健壮的 configure 脚本时,最需要注意的实际上很简单。永远不要去测试那些您并不真正需要的内容。不要测试 sizeof(char) ;因为在 C 中 sizeof 操作符返回字符大小的对象,以用来保存一些内容, sizeof(chare) 永远是 1 (即使是在那些字符位数大于 8 的那些机器上)。绝大部分情况下,没有理由去测试是否有权使用自 1989 版本标准出现以后的 ANSI/ISO C 中的函数或者标准的 C 头文件是否可用。更糟的是当标准的特性存在时还去测试非标准的特性。不要测试 <malloc.h> 是否可用;您不需要用它。如果您需要用 malloc() ,请用 <stdlib.h> 。

在许多情况下,相对于进行广泛的测试以找出使用的是哪一个特性,简单地除去对这个不明显特性的依赖要可靠得多。可移植的程序并不难写,十年前就已经有了。

最后,尽量确保您使用的是最新版本的 autoconf 。bug 会得到极好的修正;很可能旧版本 autoconf 存在 bug,而在新一些的版本中这个 bug 就已经不复存在了。

FFmpeg在Windows下使用VisualStudio调试 FFmpeg是音视频开发者的入门和必备工具,其通过一套完整的接协议、解封装、解码、渲染(或播放)、编码、封装,将大量的媒体协议、封装协议、codec、filter等集成到一起。 对于许多开发者来说,想要友好的调试FFmpeg似乎是一件不太容易的事情。FFmpeg虽然支持大部分编译环境,但是大部分Windows用户使用FFmpeg时的编译、调试环境并不那么友好。不折腾一番,想要在VisualStudio上成功调试起FFmpeg,似乎不太容易。 我从17年开始第一次接触FFmpeg,到现在(2020年7月) 阅读详情

相关推荐

OpenStack源码调试之路(3)——配置文件(configure)

前排提示:源码调试中会涉及很多OpenStack的工具库(oslo开头的),建议遇到之后想要了解这些工具库的,请参考这个博主的文章,里面对每个工具库都有介绍 目录 一.keystone.conf.configure模块 二.sql.initialize模块 三.keystone.conf.set_config_defaults模块 四.CONF 五.setup_logging 上一篇...

dyplm123的博客 1009

configure配置调试

configure的作用 1.自动进行对目标新系统的猜测过程 现在许多开放源代码的程序都会附带有 configure 脚本。在过去,程序会附带一个 Makefile 文件,这个文件中有 6 个不同的编译标记和选项,但只会用到一个,其余全部注释掉,并且会有一个注解,告诉你“为您的系统选择合适的标记”。如果配置选项更复杂,可能还会有一个名为 config.h 的长长的 C 头文件,其中包含一些要设

williamwang2013的专栏 3997

VASP+机器学习快速收敛AIMD

本文介绍了如何利用VASP结合机器学习技术快速收敛AIMD(从头算分子动力学)模拟。首先,通过训练机器学习力场,生成关键文件如ML_ABN(包含结构数据集)、ML_FFN(存储回归结果)和ML_LOGFILE(记录训练日志)。接着,配置INCAR文件以设置计算参数,包括并行化、分子动力学和机器学习相关参数。KPOINTS文件用于定义K点网格。计算完成后,备份CONTCAR文件作为后续模拟的初始结构。最后,利用训练好的力场文件进行纯机器学习力场分子动力学模拟,并提交任务执行。

qq_44812865的博客 1405

编译 debug版本

1. make make ver=release 2. configure ./configure --enable-debug 参考: 1. https://www.cnblogs.com/motadou/p/8505173.html

桃子小迷妹 848

飞牛NAS+Docker打造私人IPTV直播源:手把手教你部署iptv-api

本文详细介绍了如何在飞牛NAS上通过Docker部署iptv-api,打造私人IPTV直播源。从SSH配置到Docker容器部署,手把手教你实现自动更新直播源、多终端支持的解决方案,适用于Kodi、PotPlayer等播放器,提升家庭娱乐体验。

earth的博客 5563

手把手教你搭建基于Springboot+Vue的酒店管理系统

友友们,又是好久没更新了,马上元旦了,要迈入2025蛇年了,提前祝大家蛇年快乐,学有所成,本文博主将带领大家使用Springboot和Vue搭建一个酒店管理系统,受限于本文篇幅内容,本文罗列仅有部分简单示例内容,主要包括前后端示例源码。通过本文,你将大致掌握如何快速搭建一个现代化的Web应用。如果您想学习完整开发方案,包括项目源码+数据库文件+全套环境资源+代码部署视频教程+开发文档】获取学习资源,支持远程安装调试:一、项目背景随着互联网技术的不断发展,酒店行业对信息化的需求越来越高。

暴力码农的博客 1322

程序编译中如何调试configure

通常,在软件包的 README 文件中只能找到非常简单的“编译说明:运行 configure,然后运行 make”。但是,这样行不通时怎么办?在本文中,Peter Seebash 讲述了当自动的配置脚本失效时应该如何去做——以及作为开发者您应如何尽量避免这种错误。毕竟,如果您的程序无法编译,其结果将和您的程序编译后不能运行一样,您的用户会减少。现在许多开放源代码的程序都会附带有 confi

sdlcgxcqx的专栏 1167

Keil中搭建自动化单元测试框架Unity

前言:   虽然一些C++的自动化单元测试框架也能用来C语言单元测试,但那样我们编写C语言程序时需要符合C++的标准,这样有一些C的特性是无法使用的,限制C的特性使用不太好,于是找了一个全部用C实现的自动化测试框架。Unity是一个简单且直接的自动化单元测试框架,它由很少的几个文件构成。 搭建环境:   1.从github上下载最新版本的Unity源码,下载链接:https://github...

程序员的自我修炼 3898

Linux configure命令精通:一个完整的初学者教程

Linux中的configure命令用于配置和准备软件包以进行编译和安装。它是一个常见的脚本,由软件开发者提供,用于检查系统的环境和依赖关系,并相应地生成Makefile,从而可以在特定的Linux系统上编译和安装软件包。开源软件中一般都有一个名为"configure"的脚本文件,需要运行这个脚本来配置软件包才能进行后续编译和安装。configure命令会检查系统的库、头文件、依赖关系和其他必要的信息,然后生成一个Makefile,这时才可以使用make命令进行编译和安装。

Lion_Long的博客 1万+

uniapp [安卓苹果App端] - 详细实现手机蓝牙连接打印机及打印票据小票/标签/面单/热敏小票订单/快递单等通用兼容适配解决方案,Uniapp对接蓝牙打印机支持各种主流品牌及打印指令,强悍插件

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果app,蓝牙打印机,uniappAPP实现通过蓝牙连接打印机打印,uniapp蓝牙连接打印机,安卓蓝牙打印插件,蓝牙打印机,蓝牙ble低功率及高功率打印机小票、标签、面单打印,手机PDA蓝牙打印插件,连接蓝牙打印机,蓝牙连接,打印文本、图片、条码、二维码,兼容斑马打印机、佳博打印机,TSC打印机,免费蓝牙打印机组件,蓝牙打印条码,蓝牙打印机连接,热敏蓝牙打印机,便携式打印机,打印机搜索不到,连接失败,发送打印命令

🏆 前端领域优质创作者 1万+

模型压缩技术:剪枝、量化与知识蒸馏实战

模型压缩技术:剪枝、量化与知识蒸馏实战,在深度学习领域,模型的性能往往与模型的规模紧密相关,更大的模型通常能学习到更复杂的模式,从而在任务中取得更好的效果。然而,随着模型规模的不断增大,其在实际应用中面临着诸多挑战,如内存占用高、计算资源需求大、推理速度慢等问题,这使得在资源受限的设备(如移动设备、嵌入式设备)上部署变得困难重重。模型压缩技术应运而生,它旨在在尽可能保持模型性能的前提下,通过各种方法减少模型的参数数量和计算量,提高模型的效率和可部署性。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 5万+

程序编译中怎么样调试configure

程序编译中怎么样调试configure 来源:IBM DW中国 作者:Peter Seebach  时间:2007-04-22 点击:[收藏] [投稿] <!--google_ad_client = "pub-549909949982894

sdlcgxcqx的专栏 696

【FISCO BCOS】二十、多机部署区块链

实际开发中,为了满足高可用性和高容错性的需求,往往会采用多级部署区块链的方式,今天介绍一下FISCO BCOS的多机部署流程。

naihe_fish的博客 3647

调试configure

通常,在软件包的 README 文件中只能找到非常简单的“编译说明:运行 configure,然后运行 make”。但是,这样行不通时怎么办?在本文中,Peter Seebash 讲述了当自动的配置脚本失效时应该如何去做——以及作为开发者您应如何尽量避免这种错误。毕竟,如果您的程序无法编译,其结果将和您的程序编译后不能运行一样,您的用户会减少。现在许多开放源代码的程序都会附带有 configu

我们这里还有鱼······ 688

快速入门必看!RT-DETR手把手训练自己的数据集去跑实验,基于 ultralytics 仓库源码改进,配置虚拟环境,准备数据集、训练、验证、推理测试 ,实现0到1的完整教学过程。

本文介绍了使用Ultralytics框架训练RT-DETR模型的全流程。首先需要创建Python 3.10虚拟环境,安装指定版本的PyTorch和相关依赖包。然后准备数据集,修改配置文件,并详细介绍训练、验证和推理三个核心步骤的代码实现。训练阶段使用RTDETR类加载模型配置,设置训练参数;验证阶段评估模型性能;推理阶段可对图片、视频等进行预测。文中还提供了清华大学镜像源加速下载,以及详细的参数配置说明,帮助用户快速搭建RT-DETR目标检测模型。

Ai缝合怪、助力小伙伴高效发论文 5542

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C++支持调试不优化configure参数

C++支持调试不优化configure参数 CFLAGS="-O0" ./configure    //这个是C语言 CXXFLAGS="-O0" ./configure    //这个是C++语言

gold0523的专栏 592

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

调试 configure--当程序不能编译时怎么办

http://www.ibm.com/developerworks/cn/linux/l-debcon/ 现在许多开放源代码的程序都会附带有 configure 脚本。这种脚本的用途之一是自动进行对目标新系统的猜测过程。在过去,程序会附带一个 Makefile 文件,这

phiger的专栏 2143

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

[Linux]./configure 编译调试信息

./configure CFLAGS="-g"   CXXFLAGS="-g"

I have a adream 3544

VS2017驱动调试——configure devices无法填写Network host name解决办法

在Visual Studio 2017中进行驱动开发,添加调试设备时遇到如下问题:Network host name无输入框,无法填写,尝试了各种办法啊最终真是吐血。解决办法:窗口拉伸一下...

Nero Zhang的博客 1966

WSL中cmake构建失败--configure_file Problem configuring file

在/ etc /中使用以下文本创建一个名为wsl.conf的文件 # /etc/wsl.conf [automount] options = "metadata" enabled = true 重启wsl 查看分发版名称 > wsl.exe --list 适用于 Linux 的 Windows 子系统分发版: Ubuntu-.

我的博客 1390

configure: error: C compiler cannot create executables

今天在使用gdb调试alsa时遇到了这个错误提示:configure: error: C compiler cannot create executables在这之前我做了export CFLAGS+=-g和 export CFLAGS+=-g3 这样的一系列操作,然后才开始执行 ./configure,结果就出现了上面的错误提示。而我记得之前也执行了 exprot CFLAGS=-g然后执行./

What the Fuck 988

linux 下 ffmpeg 库怎么才可以调试

我们configure时, 加入一下选项: --enable-debug=3 \         --disable-optimizations \         --disable-asm  \         --disable-stripping \ --enable-debug  就是gcc 中添加-g选项, 3是-g的级别 --disable-optimizations

zz316316的专栏 2247
上一篇: 自已动手制作ubuntu的GRUB启动画面
下一篇: 简单GTK+自定义控件的创建
bitscro
博客等级 码龄21年 19粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值