Ứng dụng biên dịch g ++ không hoạt động


2

Tôi đã viết một mã mô phỏng với C ++ và biên dịch nó thành một tệp thực thi bằng cách sử dụng g++. Tuy nhiên, tệp đầu ra không làm gì khi nhấp đúp. Tôi đã kiểm tra "cho phép tập tin được sử dụng như thực thi" nhưng vẫn không có gì xảy ra. Bất kỳ cách thay thế nào tôi nên thử hoặc là một cái gì đó sai?

EDIT: Nó được thiết lập để chạy như một ứng dụng WINE mặc dù tôi đã xóa WINE cách đây apt-get purgemột thời gian. Nó có thể là vấn đề? Có lẽ tôi nên thử một chương trình khác để chạy nó. Những gì nó thực sự nên được đặt làm mặc định?

EDIT 2: Tôi đã thực hiện biên dịch bằng cách sử dụng:

$ sudo g++ -o main main.cpp

Nó là một ứng dụng dòng lệnh đơn giản không có GUI.


Làm thế nào chính xác bạn đã biên dịch nó thành một thực thi? Vui lòng chỉnh sửa câu hỏi của bạn để bao gồm lệnh bạn đã sử dụng. Đây có phải là chương trình chỉ dòng lệnh hay ứng dụng GUI không?
Steeldo

@steel ấn đã thêm
SarpSTA

Câu trả lời:


3

Nếu ứng dụng của bạn không có GUI (IE chỉ có đầu ra giao diện điều khiển), bạn sẽ không thấy gì vì thiết bị đầu cuối không được mở khi nhấp đúp vào tệp thực thi trong trình quản lý tệp. Tuy nhiên, ứng dụng của bạn nên chạy trong nền.

Bạn có thể chạy tệp thực thi từ trình bao hiện có bằng cách gọi nó bằng ./path/to/executable

Tùy chọn thứ hai, phức tạp hơn sẽ là tạo một tệp máy tính để bàn để khởi chạy ứng dụng từ tệp ex và đặt nó để hiển thị đầu ra đầu cuối.

Giả sử tôi có một ứng dụng rất đơn giản như

#include <iostream>
#include <stdlib.h>
int main() {
    std::cout << "hello bob" << std::endl;
    system("read moo"); // pause for input at the end.
    return 0;
}

Và tôi biên dịch nó g++ foo.cpptheo mặc định sẽ xuất ra một a.outtệp.

Sau đó, chỉ cần tạo một foo.desktoptập tin có chứa

[Desktop Entry]
Type=Application
Name=Awesome App
Terminal=true
Exec=/path/to/a.out

cái nào sau đó có thể đặt thực thi sau đó nhấp đúp chuột vào trình điều hướng tệp và xem đầu ra của thiết bị đầu cuối. Đó là cách các phím tắt ứng dụng được xây dựng trong các menu và cách chúng có tên và biểu tượng thân thiện.


1

Hãy thử chạy nó trong một thiết bị đầu cuối. Nếu đó là một chương trình dòng lệnh, bạn sẽ không thể làm được gì nhiều chỉ bằng cách nhấp đúp vào tệp thực thi trong trình quản lý tệp. Chạy các mục sau trong một thiết bị đầu cuối:

cd /path/to/directory

Thay thế /path/to/directorybằng đường dẫn đến thư mục chứa nhị phân của bạn;

sudo chmod +x binaryName

Để đảm bảo nhị phân của bạn có thể thực thi được (thay thế binaryName bằng tên của nó);

./binaryName

Để thực hiện nó.


Nó không phải là cần thiết để chmodgcc / g ++ thực thi xây dựng: nếu họ không phải là đã thực thi sau đó cái gì khác đã đi sai (bỏ qua giai đoạn liên kết, hệ thống tập tin không hỗ trợ các bit thực thi, yadda yadda)
steeldriver

Ok, nhưng OP bị rối với quyền truy cập tệp, vì vậy thật tốt để đảm bảo.
Eduardo Cola
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.