Как скомпилировать c++ файл?(ubuntu)

102
06 января 2022, 01:30

Подскажите как скомпилировать файл. Использую g++ пытаюсь скомпилить

adel@comp:~/Документы/c++$ g++ -lm -o output firs.cpp
adel@comp:~/Документы/c++$ 

создается файл

вот сам cpp файл

#include <iostream>
using namespace std;
int main(void)
{
       cout<<"Hello world";
       return 0; //Возвращаем 0 - код возврата для ОС
}
Answer 1

Запуск двойным нажатием определяет настройка Вашего проводника. Есть вероятность, что она запускается в новой сессии терминала, которая Вам не отображается, а Вы думайте что запуск не произошел...

Для запуска данного приложения Вам необходимо начать сессию командной оболочки bash(ну или чего-то еще что у Вас есть zsh, sh) которая будетВам доступна, перейти в дир. с Вашим кодом и вызвать gcc(g++) (ну или LLVM clang) для сборки Вашего кода

g++ ./source.cpp 

Ну или смотря что вы хотите от gcc)) Используйте Ваш рецепт из вопроса )) После этого Вы найдете a.out ELF файл

Для запуска Вы должны быть уверенны что стоит x(execute) бит. можете проверить этой командой

ls -l | fgrep a.out

И получить на выходе что-то по типу

-rwxrwxr-x 1 usr usr 9048 dec 18 00:00 a.out

Если есть x биты - то все отлично, его нет, то сначала вызовете

chmod +x ./app

И далее просто запустите его - В линухе по причине безопасности для запуска нужен абсолютный путь - это можно сделать так :

./app - в конкретной директории

или

/path_to_/app  - из любой директории

где ./ укажет текущий путь($pwd)

Совет: не собирайте все командами в оболочке... лучше собирать утилитой make по рецептам указанным в Makefile.

Для этого Вам понадобится makefile - который можно или написать, или генерировать (вариантов тьма, но лучше научиться юзать CMake https://cmake.org/ - там все есть) он поможет Вам организовать сборку больших решений))

CMake генерирует Вам makefile в соответствии с конфигами которые Вы ему напишите )

Самый минимум для CMake CMakeLists.txt

cmake_minimum_required(VERSION 3.16.0-rc3)
set(PROJECT_NAME "Test_for_stack")
project(${PROJECT_NAME} DESCRIPTION "C++" LANGUAGES C CXX)
include_directories(${PROJECT_SOURCE_DIR})
set(SOURCE_CODE_CPP_MAIN ${PROJECT_SOURCE_DIR}/source.cpp)
add_executable(${PROJECT_NAME} ${SOURCE_CODE_CPP_MAIN })

Или напишите makefile сами ) Вот лайтовый пример makefile

CC := g++-9
CLEAN_COM := rm -rf
compile_flags := -std=c++17 -m64 -march=native -Wall -O2 -Wpedantic -pedantic -fno-inline -DNDEBUG
app: main.o
$(CC) -o app main.o $(compile_flags)
main.o: main.cpp
    $(CC) -E main.cpp $(compile_flags) >> main.i
    $(CC) -S main.i $(compile_flags) >> main.s
    $(CC) -c main.s $(compile_flags) >> main.o 
.PHONY : clean_buf 
clean_buf :
    $(CLEAN_COM) main.i main.s main.o
.PHONY : clean 
clean :
    $(CLEAN_COM) main.i main.s main.o app

Далее просто дерните в дир. где CMakeLists.txt

cmake . && make

Или

cmake . && cmake. — build
READ ALSO
Конструктор класса. Не пойму. C++

Конструктор класса. Не пойму. C++

Доброго времени суток!

95
Не получается сделать задание по массивам [закрыт]

Не получается сделать задание по массивам [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

195
Быстродействие объединения строк

Быстродействие объединения строк

Какой способ объединения строк следует когда использовать

95
Как получить объект нужного типа?

Как получить объект нужного типа?

У меня есть список с формами(SystemWindows

176