Làm cách nào để biên dịch chương trình C++ của tôi trong Cygwin. Tôi đã cài đặt gcc. Tôi nên sử dụng lệnh nào? Ngoài ra, làm cách nào để chạy ứng dụng bảng điều khiển của tôi khi nó ở trong phần mở rộng .cpp. Tôi đang cố gắng để tìm hiểu C + + với một số chương trình nhỏ, nhưng trong Visual C++, tôi không muốn phải tạo ra một dự án riêng biệt cho mỗi tập tin .cpp nhỏ.Biên dịch C++ với Cygwin
Trả lời
Bạn cần phải sử dụng một lệnh như:
g++ -o prog prog.cpp
Đó là một hình thức đơn giản mà sẽ biến một ++ Dự án một file C thành một thực thi. Nếu bạn có nhiều tệp C++, bạn có thể làm:
g++ -o prog prog.cpp part2.cpp part3.cpp
nhưng cuối cùng, bạn sẽ muốn giới thiệu makefiles để thuận tiện để bạn chỉ phải biên dịch các bit đã thay đổi. Sau đó, bạn sẽ kết thúc với một Makefile
như:
prog: prog.o part2.o part3.o
g++ -o prog prog.o part2.o part3.o
prog.o: prog.cpp
g++ -c -o prog.o prog.cpp
part2.o: part2.cpp
g++ -c -o part2.o part2.cpp
part3.o: part3.cpp
g++ -c -o part3.o part3.cpp
Và sau đó, bạn sẽ bắt đầu tìm cách viết makefiles của bạn để làm cho họ linh hoạt hơn (chẳng hạn như không cần một quy tắc riêng cho từng tập tin C++), nhưng điều đó có thể được để lại cho một câu hỏi khác.
Về việc có một dự án riêng biệt cho mỗi tệp C++, điều đó không cần thiết chút nào. Nếu bạn đã có tất cả trong một thư mục và có một bản đồ đơn giản của C++ file sang file thực thi, bạn có thể sử dụng makefile như sau:
SRCS=$(wildcard *.cpp)
EXES=$(SRCS:.cpp=.exe)
all: $(EXES)
%.exe: %.cpp
g++ -o [email protected] $^
Sau đó chạy lệnh make
và nó sẽ (thông minh) tạo mọi của bạn thực thi. [email protected]
là mục tiêu và $^
là danh sách các điều kiện tiên quyết.
Và nếu bạn có các quy tắc phức tạp hơn, chỉ cần tack chúng xuống ở dưới cùng. quy tắc cụ thể sẽ được lựa chọn thay cho các quy tắc mẫu:
SRCS=$(wildcard *.cpp)
EXES=$(SRCS:.cpp=.exe)
all: $(EXES)
%.exe: %.cpp
g++ -o [email protected] $^
xx.exe: xx.cpp xx2.cpp xx3.cpp
g++ -o [email protected] $^
echo Made with special rule.
Bạn sẽ cần g + +. Sau đó, hãy thử g++ file.cpp -o file.exe
làm khởi đầu. Sau đó bạn có thể tránh được việc đánh máy bằng cách tìm hiểu về Makefiles.
nếu bạn muốn sử dụng Cygwin bạn nên sử dụng bình thường gcc
cú pháp
g++ -o foobar foobar.cpp
nhưng điều đó không thực sự chơi tốt với Visual C++ . Tôi khuyên bạn hãy xem xét Eclipse CDT nếu bạn thích sử dụng GCC hơn trình biên dịch C++ trực quan.
Những gì tôi làm để biên dịch một chương trình cpp:
g++ -Wall Test.cpp -o Test
-Wall enables warning and error messages to be shown
-o Test creates an Test.exe after compilation
Nếu bạn muốn biên dịch các file riêng biệt:
g++ -Wall -c File1.cpp
g++ -Wall -c File2.cpp
Bây giờ, tạo một thực thi với các tập tin đối tượng kết hợp như:
g++ -Wall File1.o File2.o -o File.exe
Bằng cách này bạn có thể biên dịch các tệp tiêu đề của mình và bạn có thể đưa vào các chương trình ứng dụng của mình.
- 1. Biên dịch độc lập với Cygwin
- 2. Biên dịch dự án Qt vào Eclipse bằng trình biên dịch Cygwin
- 3. Trình biên dịch/trình biên dịch/trình biên dịch C++
- 4. Khi nào sử dụng Cygwin hoặc MinGW để biên dịch mã C?
- 5. Trình biên dịch C không thể tạo tệp thi hành - Cygwin/MiniGW
- 6. Trình biên dịch biên dịch trong C#
- 7. Không thể biên dịch C++ với gcc
- 8. C++ Biên dịch chuỗi thời gian biên dịch
- 9. Biên dịch C# thành Gốc?
- 10. biên dịch C# lỗi CS0433
- 11. Các vấn đề khi biên dịch ffmpeg trên các cửa sổ bằng cách sử dụng cygwin
- 12. Biên dịch C++ cho JVM
- 13. Lỗi biên dịch C# Array.Contains()
- 14. C++ lỗi khi biên dịch
- 15. Biên dịch C# thành mục tiêu-C
- 16. các dịch vụ windows giám sát với cygwin
- 17. Làm cách nào để biên dịch và liên kết mã C++ với mã C đã biên dịch?
- 18. Trình biên dịch C/C++ có tối ưu hóa trên các đơn vị biên dịch không?
- 19. Không tìm thấy trình biên dịch C có thể chấp nhận được trong $ PATH sau khi cài đặt Cygwin
- 20. Cách giảm thời gian biên dịch với các mẫu C++
- 21. C++ biên dịch std :: ví dụ thread với scons
- 22. Cách biên dịch tệp .c với OpenSSL bao gồm?
- 23. Xây dựng Boost với trình biên dịch LSB C++
- 24. C - Biên dịch với các phụ thuộc bao gồm
- 25. Biên dịch C++ .lib chỉ với các tệp tiêu đề?
- 26. Biên dịch chương trình C với kiến trúc cụ thể
- 27. Biên dịch C++ với SWIG trên Mac OS X
- 28. Biên dịch nhị phân 64 bit với MinGW (Dev-C++)
- 29. không được công nhận tùy chọn dòng lệnh khi biên dịch tăng cho android trên Cygwin
- 30. Hiệu suất biên dịch mã bằng biên dịch biên dịch
Cảm ơn. Nhưng tôi có thể tạo một makefile đơn mà biên dịch bất kỳ tệp C++ nào trong cùng thư mục thay vì tạo một tệp makefile cho mỗi tệp .cpp cụ thể không? –
Tiện ích mở rộng là gì? .chế tạo? Hoặc không có phần mở rộng như myMakefile –
@Mohit, những makefiles đó biên dịch bất kỳ tệp cpp nào thành exe tương đương (ký tự đại diện và mẫu '%' nhìn thấy điều đó). Theo quy ước, tập tin được gọi là Makefile hoặc makefile. Bạn có thể sử dụng tên khác như bob.mk nhưng sau đó bạn phải làm 'make -f bob.mk all' thay vì chỉ 'make all'. – paxdiablo