㈠ 当程序不能编译时怎么办调试configure
但是,这样行不通时怎么办?在本文中,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 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 脚本会允许用户给出部分或全部已知的条件,而不是让脚本自己去猜测。
来看一个特例,假定,系统的 brokenmemmove() 出现了问题。如果您不知道它现在有一个只会影响少部分程序的 bug,您可能会编译一个程序并将其发布为产品,而没有意识到这样您将会遇到偶然的灾难性错误。
在许多情况下,一个冗长而复杂的 configure 脚本的最终结果是这样的:目标系统提供了这个程序用到的每一个标准特性,而且它们正确工作。在这种情况下为什么不手工去设置这些标记呢?这对开发者来说是可行的,而对众多用户来说就不可以了。用户可能不会知道到他们的 Linux 版本存在特定的 bug。他们可能不知道已经安装了哪些软件包,或者安装到了何处。脚本帮那些最需要帮助的人来完成大部分的例行公事的工作。当脚本出错时,引发的额外工作的代价可能不会太大。
错在何处?既然您已经基本上了解了 configure 都做了些什么工作,您可以开始寻找错误了。有两种可能的 configure 错误。一种是 configure 是正确的,而您的系统缺少必要的先决条件。绝大多数情况下,configure 脚本会正确诊断出这种错误。更为麻烦的情况是 configure 本身的错误。这样的结果或者是不能生成配置,或者生成一个不正确的配置。
当 configure 的猜测无误,而您缺少先决条件时,您所要做就是要满足缺少的那些先决条件。当您找到并安装好后,再重新运行那个报告缺少先决条件的 configure 脚本,就可以成功了。(不要忘记删除 config.cache 文件,这个文件缓存了上一次测试的结果;您应该让 configure 从头开始。)如果您正在开发 configure 脚本,您需要确保您给出的错误消息有意义。如果您测试的是一个函数,而这个函数是一个常见的可添加的软件包的一部分,那么不要告诉用户缺少的函数的名称 —— 告诉用户他们需要的软件包。确保将先决条件信息写入 README 文件中。并且,请一定要告诉人们您测试使用的其他软件包的版本号。
阅读文档无论何时,当 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-rece 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 库中某个功能的程序失败而导致无法找到那个库。在这种情况下,只需要解决第一个问题,第二个问题也就不会再出现了。
一种情况是测试程序设计不正确而可能
㈡ 如何在命令行上编译我的delphi项目
Borland出品的Delphi,有着闪电般的编译速度,但是在界面控件使用较多、工程项目较大的时候,编译一个工程仍需要一段时间,打开庞大的Delphi IDE,也需要时间。其实,在一个工程开发结束,调试完成之后的Release编译,完全可以用命令行来执行,因为Delphi的编译器参数不像C++编译器那样复杂。
笔者把Delphi联机手册中关于命令行编译(command-line compiler)的几篇主题作了翻译,希望对Delphi开发人员有帮助。
目录
1. Command-line compiler
命令行编译器
2. Command-line compiler options
命令行编译器选项
3. Compiler directive options
编译器指令选项
4. Compiler mode options
编译模式选项
5. DCC32.CFG file
编译器配置文件DCC32.CFG
6. Debug options
调试选项
7. Directory options
目录选项
8. IDE command-line options
IDE命令行选项
9. Generated files
几个IDE自动生成的文件介绍
Command-line compiler
命令行编译器
Delphi's command-line compiler (dcc32.EXE) lets you invoke all the functions of the IDE compiler (DELPHI32.EXE) from the DOS command line (see IDE command-line options. Run the command-line compiler from the DOS prompt using the syntax:
Delphi’s命令行编译器(dcc32.exe)允许你从DOS命令行方式(参照:IDE命令行选项)实现IDE编译器(delphi32.exe)的所有功能。用DOS命令运行命令行编译器语法如下:
dcc32 [options] filename [options]
dcc32 [选项] [文件名] [选项]
where options are zero or more parameters that provide information to the compiler and filename is the name of the source file to compile. If you type dcc32 alone, it displays a help screen of command-line options and syntax.
零或多个参数给编译器提供信息,文件名指定需要编译的源文件名。如果你单独输入dcc32,它会显示一个关于命令行编译的选项和语法的屏幕。
If filename does not have an extension, the command-line compiler assumes .dpr, then .pas, if no .dpr is found. If the file you're compiling to doesn't have an extension, you must append a period (.) to the end of the filename.
如果文件名没有扩展名,命令行编译器会查找扩展名为.dpr的同名文件,如果找不到,则查找扩展名为.pas的同名文件。如果你的源文件确实没有扩展名,你需要在文件名的末尾添加(.)。
If the source text contained in filename is a program, the compiler creates an executable file named filename.EXE. If filename contains a library, the compiler creates a file named filename.DLL. If filename contains a package, the compiler creates a file named filename.BPL. If filename contains a unit, the compiler creates a unit file named filename.dcu.
如果指定的源文件是一个工程文件,编译器会创建一个扩展名为.EXE的同名可执行文件。如果指定的源文件是一个库文件,编译器创建一个扩展名为.DLL的同名动态链接库文件。如果指定的源文件是一个包文件,编译器会创建一个扩展名为.BPL的同名包。如果指定的源文件是一个单元文件,编译器会创建一个扩展名为.dcu的目标代码文件。
You can specify a number of options for the command-line compiler. An option consists of a slash (/) or immediately followed by an option letter. In some cases, the option letter is followed by additional information, such as a number, a symbol, or a directory name. Options can be given in any order and can come before or after the file name.
你可以为命令行编译器指定多个参数。一个参数包含一个破折号“-”(或“/”)和紧跟着的一个选项字符构成。通常情况下,选项字符后面会跟一些附加的信息,如一个数字、一个符号、一个目录等。选项可以是任意顺序并且可以在源文件名前面或后面。
Command-line compiler options
命令行编译选项
The IDE lets you set various options through the menus; the command-line compiler gives you access to these options using the slash (/) delimiter. You can also precede options with a hyphen (-) instead of a slash (/), but those options that start with a hyphen must be separated by blanks. For example, the following two command lines are equivalent and legal:
IDE允许你使用菜单来设置各种编译选项,而命令行编译器允许你使用字符“/”作为分隔符来设定这些编译选项。你也可以使用连字符“-”来代替“/”,但是用“-”引出的参数之间必须用空格隔开。例如,下面两个命令都是等同的也是合法的:
DCC -IC:/DELPHI -DDEBUG SORTNAME -$R- -$U+
DCC /IC:/DELPHI/DDEBUG SORTNAME /$R-/$U+
The first command line uses hyphens with at least one blank separating options. The second uses slashes and no separation is needed.
第一个编译命令用“-”引出参数,且参数之间有多个空格分隔。第二个编译命令用“/”引出参数,参数之间不必要分隔。
The following table lists the command-line options. In addition to the listed options, all single-letter compiler directives can be specified on the command line, as described in Compiler directive options.
下列表中列出所有的命令行参数。在附加的选项列表中,所有的单字符编译器指令都可以在命令行编译中使用,详情请参照:编译器指令。
Option Description
选项 描述
Aunit=alias 设置单元别名
B 编译所有单元
CC 编译控制台程序
CG 编译图形界面程序
Ddefines 编译条件符号定义
Epath 可执行文件输出路径
Foffset 查找运行期间错误
GD 生成完整.Map文件
GP 生成.Map文件Public段
GS 生成.Map文件Segment段
H 输出提示信息
Ipaths 文件包含路径
J 生成.Obj目标文件
JP 生成C++类型.Obj目标文件
Kaddress Set image base address
LEpath 包.BPL文件输出路径
LNpath .dcp文件输出路径
LUpackage 使用运行期间包列表
M 编译有改动的源文件
Npath dcu/dpu文件输出目录
Opaths .Obj文件(汇编目标代码文件)路径
P 按8.3格式文件名查找
Q 安静模式
Rpaths 资源文件(.RES)路径
TXext 目标文件扩展名
Upaths 单元文件路径
V 为Turbo Debugger生成调试信息文件
VN 以.Giant格式生成包含命名空间的调试信息文件(将用于C++Builder)
VR 生成调试信息文件.rsm
W 输出警告信息
Z Disable implicit compilation
$directive Compiler directives
--Help 显示编译选项的帮助。同样的,如果你在命令行单独输入dcc32,也会显示编译选项的帮助。
--version 显示产品名称和版本
Compiler directive options
编译器指令选项
Delphi supports the compiler directives described in Compiler directives. The $ and D command-line options allow you to change the default states of most compiler directives. Using $ and D on the command line is equivalent to inserting the corresponding compiler directive at the beginning of each source file compiled.
Delphi支持用编译器指令关键字描述的编译器指令。使用“$”和“D”命令行选项可以改变所有的默认编译器状态。用“$”和“D”命令行选项等同于在源文件的前面添加编译器指令。
Switch directive option
编译器指令选项开关
The $ option lets you change the default state of all of the switch directives. The syntax of a switch directive option is $ followed by the directive letter, followed by a plus (+) or a minus (-). For example:
“$”允许你改变每一种编译器指令默认状态。编译器指令的语法是“$”后紧跟一个指令字符,再跟一个“-”或“+”。例如:
dcc32 MYSTUFF -$R-
compiles MYSTUFF.pas with range-checking turned off, while:
不使用边界检查编译MYSTUFF.pas单元:
dcc32 MYSTUFF -$R+
compiles it with range checking turned on. Note that if a {$R+} or {$R-} compiler directive appears in the source text, it overrides the -$R command-line option.
使用界面检查编译MYSTUFF.pas单元。如果将编译器指令{$R+}或{$R-}添加到源文件的开始,它将覆盖从命令行传入的参数。
You can repeat the -$ option in order to specify multiple compiler directives:
你可以用多个“$”来指定多个编译器指令,如:
dcc32 MYSTUFF -$R--$I--$V--$U+
Alternately, the command-line compiler lets you write a list of directives (except for $M), separated by commas:
命令行编译器允许作用逗号分隔的编译器指定列表,如:
dcc32 MYSTUFF -$R-,I-,V-,U+
只需要用一个“$”符号。
Only one dollar sign ($) is needed.
注意,因为$M的格式不一样,你不能在逗号分隔的指令列表中使用$M
Note that, because of its format, you cannot use the $M directive in a list of directives separated by commas.
Conditional defines option
条件编译选项
The -D option lets you define conditional symbols, corresponding to the {$DEFINE symbol} compiler directive. The -D option must be followed by one or more conditional symbols separated by semicolons (;). For example, the following command line:
“-D”选项允许你定义一个编译条件,符合你用{$DEFINE symbol}定义的编译器指令。“-D”选项后必须跟随一或多个用分号分隔的编译条件符号,如下命令:
dcc32 MYSTUFF -DIOCHECK;DEBUG;LIST
defines three conditional symbols, iocheck, debug, and list, for the compilation of MYSTUFF.pas. This is equivalent to inserting:
定义了三个编译条件符号:IOCHECK,DEBUG,LIST,用于MYSTUFF.pas单元中。这等同于在源文件中插入以下语句:
{$DEFINE IOCHECK}
{$DEFINE DEBUG}
{$DEFINE LIST}
如果你指定了多个“-D”选项,你可以联接它们,如下:
dcc32 MYSTUFF -DIOCHECK-DDEBUG-DLIST
等同于第一个例子。
编译模式选项
有几个选项能影响编译器自身的功能。像其它选项一个,你可以使用“/”或“-”的格式。别忘了用至少一个空格分隔这些选项。
选项(-M)
命令行编译器使用构造逻辑的方式来维护工程。“-M”选项指示编译器检查所有与编译文件相关联的文件。用这个参数会导致编译时间增大。
一个源文件在下列情况下会重新编译:
The source file for that unit has been modified since the unit file was created.
源文件被创建以来被修改过;
用“$I”指令包含的任何文件,用“$L”包含的任何.Obj文件,或用“$R”关联的任何资源文件.Res,比源文件中的要新;
单元接口部分interface的uses段有改动。
在单元编译时指令“-Z”在构造逻辑期不被接受。
If you were applying this option to the previous example, the command would be:
如果你在上一个例子中使用这个指令,编译命令就应该是:
dcc32 MYSTUFF -M
编译所有 选项(-B)
用于取代要知道哪些单元需要更新-M的选项,你可以使用-B选项来更新所有你的程序中关联的单元。你不能在程序中同时使用-M和-B。选项-B比-M速度更慢,而且它并不是必需的。
如果你在前一个例子中使用这个参数,编译命令就应该是:
dcc32 MYSTUFF -B
查找错误 选项(-F)
当一个程序由于运行期间错误而终止时,它会显示一个错误号和错误地址在错误发生时。用-Faddress选项来指定错误地址,你在源文件中能找到引发错误的位置,如果你的程序和单元编译时附加了调试信息(使用$D编译器指令)。
为了命令行编译器能用-F选项查找运行期间错误,你必须传递与第一次编译时相同的指令列表。
先前提到过,你的程序和单元必须启用调试信息,命令行编译器才能查找运行期间错误。默认情况下,所有的程序和单都是启用调试信息的,除非你用{-D}或-$D-指令关闭它,这样,命令行编译器就不能查找运行期间错误了。
使用包(-LU)选项
使用-LU选项来在编译时添加你应用程序中要用到的运行期间包。运行期间包已经在“工程选项”对话框中列举的,不必再在命令行中添加。
Disable implicit compilation (-Z) option
(此选项在delphi6.0/7.0中有不同描述,在此不作翻译)
目标文件扩展名(-TX)选项
选项-TX允许你改写默认的输出文件扩展名。例如:
dcc32 MYSTUFF -TXSYS
生成的将是一个叫做MYSTUFF.SYS的文件。
Quiet (-Q) option
安静模式(-Q)选项
安静模式选项禁止在编译时显示文件名及代码行数,如果命令行编译器调用这个选项的话。
它的输出仅限于起始时行版权信息以及结尾的统计信息。当然,如果发生错误,它也会输出。
DCC32.CFG file
DCC32.CFG配置文件
你可以设置一个编译选项列表到一个叫做DCC32.CFG的配置文件中,它将用于编译时附加到命令行参数后。配置文件的每一行都相当于一个额外的命令行参数插入到实际的命令行参数前(注意,是实际参数前)。因而,你可以使用这个配置文件改变一些命令行参数的默认设置。
命令行编译器允许你输入相同的命令行参数,它将忽略所有除最后一个之外。这个的话,尽管通过配置文件你可以改变一些设置,你仍然可以覆盖它使用命令行参数。
当dcc32启动时,它查找DCC32.CFG文件在当前目录。如果文件没有找到,dcc32会查找它所在的目录。
以下是一个DCC32.CFG配置文件的例子,定义了关于文件包含、OBJ文件包含、单元文件搜索路径信息,并改变了编译器指令$O和$R的默认值。
-IC:/DELPHI/INC;C:/DELPHI/SRC
-OC:/DELPHI/ASM
-UC:/DELPHI/UNITS
-$R+
-$O-
现在,如果你输入:
dcc32 MYSTUFF
编译器把它当作你输入如下命令:
dcc32 -IC:/DELPHI/INC;C:/DELPHI/SRC -OC:/DELPHI/ASM -UC:/DELPHI/UNITS -$R+ -$O- MYSTUFF
调试选项
编译器有两个命令行参数可以生成外部调试信息:MAP文件选项和调试信息选项。
Map file (-G) options
Map文件(-G)选项
选项-G指示命令行编译器生成一个.map文件来查看一个可执行文件的布局。不同于可二进制的可执行文件和.dcu文件,.map文件是一个可读的文本文件,可以被打印或是其它文本编辑器编辑。选项-G后必须跟字符S、P或D,去决定你想要在.map文件列出的信息。一个.MAP文件被分成三个节:
Segment
Publics
Line Numbers
-GS选项只输出Segment Section,-GS选项输出Segment和Publics,-GD输出所有的三个Sections.-GD选项也生成一个扩展名为.DRC的文件包含所有的用resourcestring关键字声明的字符串常量。
用默认的编译选项{$D+,L+}编译模块(程序或单元),Publics Section列举所有的全局变量、过程和函数,Line Numbers Section列举模块中所有的过程和函数的行号。如果用{$D+,L-}编译选项编译模块,Publics Section中仅列举在单元的interface部分定义的符号。如果用{$D-}选项编译模块,在Line Numbers Section没有任何入口。
调度选项(-V)
选项-V、-VN、-VR会指示编译器生成调试信息,它们能在命令行中组合使用。
生成Turbo Debugger使用的调试信息的选项(-V)
当你在命令行中使用-V选项时,编译器会在可执行文件的末尾附加与Turbo Debugger5.0一致的外部调试信息。Turbo Debugger包含代码和硬件级别的强大的断点。
虽然附加调试信息到查执行文件中会使可执行文件增大,但是它并不影响实际可执行文件中的可执行代码,也不需要额外的内存来启动程序。
㈢ 怎么添加使用第三方jar包及无法编译的问题解决方法
1、将jar包放入项目里的libs文件夹中。
2、在project选中jar包点击右键"Add as library"。
3、这两步是网上比较容易找到的,但此时项目仍然是无法正常编译的,这时需要在项目的build.gradle文件里的dependencies节加入 dependencies
{
compile files('libs/android-support-v4.jar')
compile files('libs/xxxx.jar')
}
4、此时项目正常编译并运行了,但当你的代码中真正创建了引用jar里的类实例时,有可能系统会抛出异常NoClassDefFoundError,这个时候可以按以下步骤操作:
进入命令提示符窗口。
㈣ ccs工程没有active编译不了
1.打开我们安装的CCS工具,显示界面如下:
2.点击“Project”,下拉菜单中点击“Import CCS Projects...”,操作过程截图如下:
点击之后,出现如下截图的界面:
3.选择“Select search-directory”,然后点旁边的“Browse...”,找到要导入的工程目录,我们要导入的“SimpleBLEPeripheral”工程的CCS配置在下面所示路径中:
“C:\ti\simplelink\ble_cc26xx_2_01_00_44423\轮缓Projects\ble\SimpleBLEPeripheral\CC26xx\CCS”
选择完路径之后,将搜索出来的项目勾选上,并把“Copy projects into workspace”也勾选上,这样可以将项目导入到工作目录中。选择之后截图显示如下:
4.选择完之后,点击“Finish”,将相关项目导入到CCS中。导入之后显示如下:
到这一步,工程就导入完成了。
CCS工程编译
导入项目之后,我们来演示一下项目的编译,第一次导入项目的话,需要先编译下协议栈,然后才能编译应用,而且因为是第一次导入,所以最好“Rebuild Project”。
具体的操作步骤:
1.在“SimpleBLEPeripheralStack”项目名上点击鼠标右键,下拉菜单中选择点击“Rebuild Project”,协议栈的编译过程就开始了,编译完之后显示如下:
2.在“SimpleBLEPeripheral”项目名上点击鼠标右键,下拉菜单中选择点击“Rebuild Project”,应用部分的编译过程就开始了,编译完之后显示如下:
3.后面如果不再修改协议栈,就可以不去编译协议栈,只编译有改动的应用部分即可。
CCS工程下载及调试
编译完导入的工程之后,我们需要将编译的工程下载到开发板中运行调试。
操作步骤:
1.将协议栈工程设置为“Active”,方法很简单,就是在协议栈工程名上鼠标左键点击一下即可。设置完之后,点击“Run”,下拉菜单中点击“Debug”即可,点击之后就会显示Debug界面,协议栈部分不需要仿真,所以直接关闭就行。
2.将应用部分项目设置为“Active”,然后点击“Run”,下拉菜单中点击“Debug”即可,点击之后就会显示Debug界面,界面截图如下:
3.来看一下调试仿真界面的一些按键的功能,如下图所示:
圈中部分的几个按键的功能分别是:快速执行、暂停、终庆桐敬止仿真、单步运行(会跳入执行的函数内部)、单步运行(不跳入执行的函誉慎数内部)和回到上一步。
4.在CCS中复位设备,操作过程显示如下:
点击“Board Reset(automatic)”即可。
这样,编译、下载及调试过程我们也初步的了解了一下。
打开CSDN APP,看更多技术内容
CCS8.3.0创建工程、编译及仿真_qq_36545292的博客_ccs怎么编...
编译完成后点击veiw->Target Configuration 双击XXXX.ccxml在Basic选择Connection以及Board,在advanced界面添加.gel文件 我的gel文件在D:\ti\ccsv8\ccs_base\emulation\boards\evmc6678l \gel中,如果找不到就在ti的安装目录文件夹中用windo...
CMake构建CCS工程与EMCV编译_小裘HUST的博客_cmake编译ccs
因为虽然可以用CMake编译TI的CCS工程,但是调试还是离不开CCS。用CMake只是让程序编写的开发环境变得轻便了,可以在VS Code的界面下完成代码编写和编译,但最后Emulation还是得用CCS。另外,EMCV是OpenCV1.x移植到C6000 DSP上的计算机视觉库,...
CCS安装编译器的方法
TI公司的编译器叫CGT:code generation tools 先下载所需版本的CGT 到TI官网找CGT 在www.ti.com.cn上搜索CGT,即可找到C2000-CGT:C2000代码生成工具-编译器 也可以直接到这里找: C2000-CGT IDE、配置、编译器或调试器 | TI.com.cn查看 TI C2000-CGT IDE、配置、编译器或调试器 的下载量、描述、特性和支持文档并开始设计。https://www.ti.com.cn/tool/cn/C2000-CG
继续访问
TI CC2640R2f蓝牙BLE开发笔记(二)建立peripheral和central工程
目录一、为什么要建立自己的工程:二、看看我们能够编写哪些文件:2.1、大致框架2.2、我们可以修改的文件: 本系列文章由江山(csdn名:补不补布)(github:jianggogogo)自己写成,当中用到引用时都已经标记出来,如果出现版权问题,请直接联系我修改。当然,技术在于分享,欢迎大家转载,不过请注明出处。最后,如果出现有错误的地方欢迎大家指正。 一、为什么要建立自己的工程: 我们从网上...
继续访问
matlab 指定ccs编译器,在CCS5.5中导入CCS3.3工程——指定编译器和修改pr...
首先,得安装CCS3.3,因为后面我们要用到CCSStudio_v3.3/C5500/cgttools下的文件。这其实就是3.3.2版本的编译器,因为之前在CCS5.5和CCS4.2实验时候导入这块板子的CCS3.3版例程的时候会提示警告,说导入的时候有些问题,要你去看project_lo...
CCSv7使用指南连载1:导入工程及编译下载_电机与控制的博客
所以,我们先不建立工程,直接通过导入现有工程的方式去演示CCS的使用。本文采用的硬件平台是F28069 Launchpad。 2 导入工程 点击Project->Import CCS Projects选择相应的工程目录即可,对应基于CCS3.3版本的工程可以通过ImportLegacy CCSv3.3 P...
最新发布 CCS导入工程编译报错This project was created using a version of compiler that is not currently installed
CCS导入工程编译报错
继续访问
BLE开发-CC2640开发笔记(1)
记录CC2640官方软件开发指南中的要点信息,本篇为开发入门部分。 1.CC2640程序开发需要用到的软件工具: BLE-stack:ble-stack-v2.2.1 for cc2640/cc2650 (需要默认路径安装) IDE和仿真器:IDE 可以使用IAR for ARM (推荐7.8以上版本) 或CCS(TI官方开发环境);仿真器支持XDS100
继续访问
通过批处理编译CCS工程_yyzhb111的博客_ccs命令行编译
工作中除了使用脚本(命令行)编译Keil工程,还需要使用CCS(TI-C2000) TI提供的CCS-IDE,会自动生成MakeFile,通过调用gmake编对MakeFile文件进行编译 以CCS6为例: 查看CCS安装目录(ti/ccsv6/utils/bin),可以看到gmake.exe ...
CCS5.5编译问题
CCS5.5 编译报错
继续访问
CCSv7使用指南连载3:CCS文件及编译构建过程
本系列文章主要目的是介绍CCS使用入门及在实际项目开发过程中有用的技巧及方法,第3篇介绍如何在同一个workspace下面管理工程以及相应CCS文件的介绍。
继续访问
【BLE-CC2640】CC2640之快速入门
本文简介如何从CC2541快速入门至CC2640
继续访问
CCS5导入工程时出错:Issues that may require your attention were encountered while importing the projects
1.出错 CCS5.5.0导入工程(Import CCS Eclispse Project)时出错:Issues that may require your attention were encountered while importing the projects ,如下图: 2.原因 是由于文件夹名(例如f28335_Sci_Update_Flash_first)和文件夹中的工程名
继续访问
CCS调试工程时,调试选项都不能用的排查方法
使用ccs时, 点击debug,可以下载代码同时进行在线调试。 如果点击下载了,但是没有出现调试怎么处理呢? 如下图,调试的按钮都是灰的。 可以使用如下的排除方法: 1、(80%的可能性)首先要保证你的工程编译是通过的。没有错误才能生成可供调试的文件。 参照如下图片,先回到编辑界面(红色圈圈为ccs edit,右边的为 ccs edit,是两个不同的界面,可用菜单和功能有所不同)。 在编辑界面中,右键单击工程rebuild all,查看下problems窗口的输出,不能有错误。(如果界面没
继续访问
CCS使用教程05:CCS8.0常用菜单
目录 01 CCS的介绍、下载与安装 1 CCS的介绍 2 下载 3 安装 02 创建一个CCS工程 1 工作空间 2 创建一个新的CCS工程 3 编译与生成 03 工程导入 1 前面的话 2 导入工程 3 完整工程的结构 04 程序烧写与仿真 1 目标配置文件CCXML 2 连接仿真器 3 烧写程序(装载程序) 4 在线仿真 05 CCS8.0常用菜单 1 CCS编辑界面与调试界面 2 编译 3 搜索 4 打开窗口 ...
继续访问
CCS-工程头文件与库文件的链接编译教程
首先,明确C语言中头文件与库文件的区别。 简单来说:用户通过头文件找到库文件中头文件中有函数的申明,库文件实现函数的定义。 比如,printf函数。使用时应包括头文件stdio.h,打开头文件stdio.h你只能看到,printf这个函数的申明,却看不到printf具体是怎么实现的,而函数的实现在相应的C库中。而库文件一般是以二进制形式而不是C源文件形式提供给用户使用的。程序中包括了stdio.h这个头文件。链接器就能根据头件中的信息找到含有printf这个函数的实现的库文件,从而把这段代码(printf函
继续访问
CCS3.3编译链接库文件与头文件
编译的include文件目录 Compiler -》 Preprocessor-》include search path //include文件搜索路径 $(Proj_dir); //注释:工程所在文件同级目录下 ../../include;
继续访问
ssh: connect to host slave2 port 22: Connection refused
1.命令行输入: 更新安装包 $ sudo apt-get update 下载ssh $ sudo apt-get install ssh 完成
继续访问
热门推荐 CCS如何打开已建好的工程
CCS如何打开已建好的工程 文章转自网络文库 1、首先什么也不干,直接打开ccs软件,打开之后点击圆圈圈中的。 2、打开之后会出现这样一个对话框,然后点击红圈圈中的。 3、然后就在电脑中找到你要打开的工程的那个文件夹。 4、找到之后选中工程所在的文件夹然后点击确定。
继续访问
CCS以相对路径的方式添加文件到工程
在CCS建立的工程中添加相对路径的文件
继续访问
hutool 读取扩展名文件_使用Keil下载单独的Hex文件到单片机内
前言初学STM32时,是通过串口1把Hex文件下载进STM32的,需要一个串口模块,而且还要设置BOOT0和BOOT1电平,然后通过FlyMcu软件进行下载,这也是一种不错的方法,这里我要介绍的是使用JLink调试器和Keil MDK-ARM来下载Hex文件,无需源代码,只需要一个调试器。所需要的工具和软件Hex文件,如Demo_STM32.hexKeil软件,v4或v5版本,如Keil v5.1...
继续访问
CCS 如何打开一个工程 Code Composer Studio
CCS软件是一个eclipse框架软件,但做单片机的多数都对此类软件是文盲,遇到问题多网络。 CCS软件可以新建一个工程,也可以通过import导入别人的工程。 通过import导入别人的工程有一个前提,就是你所使用的CCS版本必须要大于等于别人的工程版本。 最好的方式就是自己建立一个工程,然后把别人的文件拷贝进自己的工程,具体操作如下: 1 打开ccs新建一个工程。 2 在别人的工程里选择所有.c和.h文件。 3 粘贴到自己的工程。 详细截图: 1 打开ccs新建一个工程。 得到 2 在别人的工程.
继续访问
【电力电子】搭建TMS320F28335的编译环境CCS的方法
1、从哪下载CCS?2、从哪下载官方例程?3、如何快速拥有一个自己的project? 安装要点:两种方式任选其一(在线包、离线包)、两个条件必不可少(非中文路径、防火墙&杀毒软件关闭)。 3、如何快速拥有一个自己的project? 新建一个project,然后将例程中CMD,INCLUDE,SRC文件夹复制过来即可。具体如下:CCS软件安装说明和基本使用通常采用CCS来对TMS320F28335进行程序编写调试,本节简要介绍工程导入和程序固化的方法。建立CCS的工程有新建工程和导入工程两种方式
继续访问
关于ccs软件的简单使用
CCS软件应用实验 使用CCS5.5版本的程序。 目的: (1)导入既有CCS工程,编译、运行和调试DSP应用程序; (2)创建应用型工程、源文件和目标配置文件; (3)掌握CCS的基本调试步骤和内存数据观察方法。 界面: 注意右边CCS Edit表示界面是代码编辑界面: 注意左边选择CCS Debug表示代码调试界面: 一、创建一个Hello world简单程序: 1)Project->New CCS Project 2)按下图选择 Proj...
继续访问
CCS5.5导入已有工程
场景: 提示:这里简述项目相关背景: CCS5.5 问题描述 提示:这里描述项目中遇到的问题: 导入已有工程 解决方案: 提示:这里填写该问题的具体解决方案: 双击打开CCS5.5,设置空间 尽量选择不要在C盘。选择下图所示的选项,将已有文件导入 这样就可以导入文件了。 此外,工程里一般有4个文件夹,Code自建代码,含Alg算法类,APP模块化,Dat数据类,Drv DSP外设配置类。这四个文件夹一般含include和Source两个子文件,前者头文件,后者源代码。 DEBUG,系统自动生成
继续访问
ccs工程编译
CC26
㈤ Visual studio 2015编译项目报错 未能解析目标框架“.NETFramework,Version=v4.0”的 mscorlib
资源管理器下点击项目名,然后,右拦让键属性--更改原.Net版本 VS2015应该简逗局是4.5的。
因为原指滑项目可能是在其他开发环境 比如VS2010导过来的,原环境是.Net4.0。如果页面逻辑是用后端标记写的,不知道会不会有兼容上的问题。稳妥的办法是为VS2015安装4.0的环境。
㈥ DELPHI源码如何编译为可执行文件
Ctrl+F9,然后你一定要看下是不是有错误,如果有错误就生成不了exe!!!!然后在进一步调试可以继续提问,希望我的回答令您满意!
㈦ 如何在Visual Studio中选择C++和C#的编译器版本
MSBuild简介
Visual Studio的编译引擎是 MSBuild ,它提供了一套项目文件( .csproj , .vbproj , vcxproj )的XML的游族Schema,用来指定如何处理和编译项目。
当然MSBuild不依赖于Visual Studio,完全可以在不安装Visual Studio的情况下使用MSBuild。比如可以从 Microsoft Build Tools 2015 下载MSBuild来编译C#。2016年3月31号微软也宣布了 Visual C++ Build Tools 2015 ,可以 下载 来神辩弊编译VC++的项目。
MSBuild也是一个MIT License的开源软件,可以在Github上看到它的 仓库 。
MSBuild Toolset (ToolsVersion) 是一个任务、目标和工具的集合,指定MSBuild的行为。通常一个MSBuild的Toolset包含 microsoft.common.tasks 文件, microsoft.common.targets 文件和编译器比如 csc.exe , cl.exe 和 link.exe 。
在装Visual Studio时会按照对应版本的MSBuild,比如Visual Studio 2015对应的MSBuild就是v14。如果我们用Visual Studio创建C#和C++的项目,在 .csproj 和 .vcxproj 文件的第一行都指定了对应MSBuild的Toolset,如下灶哪所示。
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
在Visual Studio中编译项目时就会使用v14的MSBuild来编译。
用VS2015的MSBuild来编译VS2015创建的项目
我们也可以直接使用MSBuild来编译,我分别创建了一个空的C#和空的C++的Console应用,然后打开MSBuild Command Prompt for VS2015,用如下命令行来编译
msbuild CompilerDemo.sln /t:rebuild
可以看到如下的命令行输出:
CoreCompile:
C:\Program Files (x86)\MSBuild\14.0\bin\csc.exe ...
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe ...
Link:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe ...
说明在编译项目时使用了v14的MSBuild下的 csc.exe , cl.exe 和 link.exe。
用VS2013的MSBuild来编译VS2015创建的项目
如果我们打开Developer Command Prompt for VS2013,用VS2013的MSBuild编译项目。
msbuild CompilerDemo.sln /t:rebuild
得到如下的命令行输出:
CoreCompile:
C:\Program Files (x86)\MSBuild\12.0\bin\Csc.exe ...
Done Building Project "D:\Documents\Visual Studio 2015\Projects\CompilerDemo\CSharpCompiler\CSharpCompiler.csproj" (Rebuild target(s)).
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets(64,5): error MSB8020: The build tools for v140 (Platform Toolset = 'v140') cannot be found.
我们看到用v12的MSBuild编译C#项目时成功了,但是编译C++项目时失败了,说找不到Platform Toolset = ‘v140’。我们回头打开 .vcxproj 文件,可以看到在这个文件里指定了 <PlatformToolset>v140</PlatformToolset> 。我们把它改成v120,再重新编译,这次发现成功了。
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe ...
Link:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\link.exe ...
用VS2015的MSBuild来编译VS2015创建的项目(修改C++项目的PlatformToolset)
修改完 PlatformToolset 之后,我们再用VS2015的MSBuild编译一下,看看结果。
CoreCompile:
C:\Program Files (x86)\MSBuild\14.0\bin\csc.exe ...
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe ...
Link:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\link.exe ...
我们发现它使用了v14的 csc.exe ,但是使用了v12的 cl.exe 和 link 。
用VS2015的MSBuild来编译,但是指定VS2013的C++和C#的编译器
那有没有办法让VS2015的MSBuild也使用v12的C#的编译器( csc.exe )呢?我们可以参考一下 Overriding ToolsVersion Settings 。
可以使用MSBuild的命令行参数开关: /ToolsVersion ,简写为 /tv 。打开MSBuild Command Prompt for VS2015,用如下命令行来编译。
msbuild CompilerDemo.sln /t:rebuild /tv:"12.0"
我们得到了如下的命令行输出:
CoreCompile:
C:\Program Files (x86)\MSBuild\12.0\bin\Csc.exe ...
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe ...
Link:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\link.exe ...
嗯,我们终于在VS2015的MSBuild命令下,成功的使用了VS2013的C++和C#的编译器。
用Visual Studio 2015来编译,但是指定VS2013的C++和C#的编译器
那么有没有办法来让Visual Studio 2015在编译时也用2013的编译器呢?我们没有办法来指定MSBuild的开关了。根据 Overriding ToolsVersion Settings 介绍的方法,需要做两件事。
修改项目文件的 ToolsVersion 属性
在本文的开头提到了在项目文件的第一行写明了对应MSBuild的Toolset。我们可以修改这个属性,把项目文件的第一行改成:
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
设置环境变量
set =true
这样在Visual Studio 2015中编译也会使用VS2013的编译器了。而且直接在MSBuild Command Prompt for VS2015中直接使用MSBuild,不需要制定 /tv 开关,也是使用VS2013的编译器了。
来验证一下,如果我们在代码中使用了C#6的新特性(VS2015支持)。
object o = null;
Console.WriteLine(o?.ToString());
那么在Visual Studio 2015中编译会报错。
Build FAILED.
"D:\Documents\Visual Studio 2015\Projects\CompilerDemo\CompilerDemo.sln" (rebuild target) (1) ->
"D:\Documents\Visual Studio 2015\Projects\CompilerDemo\CSharpCompiler\CSharpCompiler.csproj" (Rebuild target) (2) ->
(CoreCompile target) ->
Program.cs(10,33): error CS1525: Invalid expression term '.' [D:\Documents\Visual Studio 2015\Projects\CompilerDemo\CSharpCompiler\CSharpCompiler.csproj]
Program.cs(10,34): error CS1003: Syntax error, ':' expected [D:\Documents\Visual Studio 2015\Projects\CompilerDemo\CSharpCompiler\CSharpCompiler.csproj]
Program.cs(10,44): error CS1002: ; expected [D:\Documents\Visual Studio 2015\Projects\CompilerDemo\CSharpCompiler\CSharpCompiler.csproj]
Program.cs(10,44): error CS1525: Invalid expression term ')' [D:\Documents\Visual Studio 2015\Projects\CompilerDemo\CSharpCompiler\CSharpCompiler.csproj]
0 Warning(s)
4 Error(s)
在Visual Studio 2015中指定C#语言的版本
另外在Visual Studio中可以指定支持的C#语言的版本。右键项目-》属性-》编译-》高级-》语言版本。Visual Studio 2015的默认就是支持的最高版本C# 6.0,可以在这里选择不同的版本。
总结 TLDR
对于C++项目
通过设置 PlatformToolset 来指定C++的编译器版本。
对于C#项目
使用相应版本的MSBuild。
或者
使用MSBuild的命令行开关 /ToolsVersion ( /tv )。
或者
1. 修改项目文件的 ToolsVersion 属性。
2. 设置环境变量 。
㈧ 用VS2008如何编译.c,C语言文件
在vusal studio 2008中编译c语言
visual studio是以项目为单位的,代码文件发须包含在项目里才能编译。可是在新建项目中,有vc++的项目,有vc#的项目,就是没有c项目。是不是不能编译c项目呢?
其实在visual stuio 是可以编译c项目,的只不过要绕个圈子旅宴清而已。下面介绍具体的步骤。
(1)新建项目,快捷键ctrl+shift+N,在项目类型中选visual c++-------->"win32“,然后选 右的侧的“win 32控制台应用程序“,拆前为项目祥判命名。
接下来在应用程序向导中心“下一步”,在“应用程序设置”中选中“附加选项”的“空项目”,这一步是关键。
(3)现在要向项目中添加文件了。快捷键ctrl+N,在“类别”中选“常规”,在模板中选“文本文件”新建一个空白文件。
(4)快捷键crtl+S将新建的文本保存为c源文件,如“test.c”。然后再输入一段代码并保存。
(5)现在要把c源文件加到项目中了。 在“解决方案资源管理器”中,右击项目名称下面的源文件“,选择“添加”----“现有项”把刚才的文件加入到项目中就行了。。。。按一下F5试试就可以编译了。。
以上是本人下载的pdf文件里的一段。。。。。
能不能用我就不知道了。。。
㈨ 如何在Visual Studio中选择C++和C#的编译器版本
Visu后来进行C++、C#、web开发,改为开发环境。