導航:首頁 > 源碼編譯 > v151項目怎麼編譯

v151項目怎麼編譯

發布時間:2023-05-21 08:02:36

㈠ 當程序不能編譯時怎麼辦調試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開發,改為開發環境。

閱讀全文

與v151項目怎麼編譯相關的資料

熱點內容
網盤忘記解壓碼怎麼辦 瀏覽:852
文件加密看不到裡面的內容 瀏覽:651
程序員腦子里都想什麼 瀏覽:430
oppp手機信任app在哪裡設置 瀏覽:185
java地址重定向 瀏覽:268
一年級下冊摘蘋果的演算法是怎樣的 瀏覽:448
程序員出軌電視劇 瀏覽:88
伺服器系統地址怎麼查 瀏覽:54
解壓游戲發行官 瀏覽:601
國外小伙解壓實驗 瀏覽:336
頂級大學開設加密貨幣 瀏覽:437
java重載與多態 瀏覽:528
騰訊應屆程序員 瀏覽:942
一鍵編譯程序 瀏覽:129
語音加密包哪個好 瀏覽:340
有什麼學習高中語文的app 瀏覽:282
安卓手機的表格里怎麼打勾 瀏覽:411
阿里雲伺服器有網路安全服務嗎 瀏覽:970
超解壓兔子視頻 瀏覽:24
單片機怎麼測負脈沖 瀏覽:176