문제

나는 창을 설치하기로 결정했고 이제 Debian을 기본 OS로 실행하고 있습니다. 나는 항상 Windows, 특히 Visual Studio로 코딩했습니다. 현재 Linux에서 코드를 컴파일하는 데 익숙해 지려고 노력하고 있습니다.

나는 여전히 읽을 문서가 많지만, 당신이 나를 너무 쉽게 만들기를 기대하지는 않지만, 어디서부터 시작 해야하는지에 대한 몇 가지 포인터를 얻는 것이 여전히 좋을 것입니다. 구체적인 질문이 있지만 주제와 관련하여 다른 것을 제안/추천하십시오.

  • Make 파일 생성에 권장되는 가이드는 무엇입니까?
  • 다른 Linux 소프트웨어를 살펴보면 거의 항상 '구성'파일이있는 것 같습니다. 정확히 무엇을합니까? 필요한 라이브러리가 설치되어 있는지 확인하거나 요구 사항을 확인하는 것 이상을 확인합니까?
  • 라이브러리를 어떻게 연결합니까? 이것이 MakeFile 또는 G ++ 매개 변수와 어떤 관련이 있습니까? Windows에서 라이브러리를 컴파일하고 헤더 파일을 포함시키고 링커에 링크 할 추가 LIB 파일을 알려주고 DLL 파일을 복사합니다. 이 프로세스는 Linux에서 정확히 어떻게 작동합니까?
  • 코드 편집자 권장 사항? 나는 현재 Nano를 사용하고 있으며 Vim과 Emacs에 대해 들었지만 각자의 이점이 무엇인지 모릅니다. 다른 사람이 있습니까? 왜 이전 세 가지 중 하나를 고려할 것인가? 참고 : 나는 IDE를 찾고 있지 않습니다.

모든 도움, 가이드 및 문서에 대한 링크 (바람직하게는 초보자를 목표로하는 링크)는 대단히 감사합니다!

도움이 되었습니까?

해결책

Make 파일 생성에 권장되는 가이드는 무엇입니까?

"Make"를 호출하여 Makefile에서 빌드합니다. 그리고 Makefile 내부에서 G ++ 및 LD를 사용하여 컴파일하고 연결합니다.

다른 Linux 소프트웨어를 살펴보면 거의 항상 '구성'파일이있는 것 같습니다. 정확히 무엇을합니까? 필요한 라이브러리가 설치되어 있는지 확인하거나 요구 사항을 확인하는 것 이상을 확인합니까?

건축에 사용되는 환경을 기반으로 다양한 것을 설정하는 데 일반적으로 사용되는 스크립트입니다. 때로는 기본 쉘 스크립트 일 뿐이며, 다른 경우에는 AutoConf와 같은 도구를 호출하여 빌드시 사용 가능한 내용을 발견합니다. "구성"스크립트는 일반적으로 사용자가 실험 기능에 대한 지원과 같이 구축 또는 제외 할 다양한 선택 사항을 지정할 수있는 장소이기도합니다.

라이브러리를 어떻게 연결합니까? 이것이 MakeFile 또는 G ++ 매개 변수와 어떤 관련이 있습니까? Windows에서 라이브러리를 컴파일하고 헤더 파일을 포함시키고 링커에 링크 할 추가 LIB 파일을 알려주고 DLL 파일을 복사합니다. 이 프로세스는 Linux에서 정확히 어떻게 작동합니까?

LD는 GNU 링커입니다. 별도로 호출 할 수 있습니다 (대부분의 MakeFiles가 끝날 것입니다). G ++ 및 LD로 전달하는 옵션은 포함 된 헤더, 링크 라이브러리 및 결과를 출력하는 방법을 찾을 위치를 결정합니다.

코드 편집자 권장 사항? 나는 현재 Nano를 사용하고 있으며 Vim과 Emacs에 대해 들었지만 각자의 이점이 무엇인지 모릅니다. 다른 사람이 있습니까? 왜 이전 세 가지 중 하나를 고려할 것인가? 참고 : 나는 IDE를 찾고 있지 않습니다.

VIM과 EMAC는 다양한 사용법을 지원하는 매우 유연한 편집자입니다. 구문 강조 표시와 같은 몇 가지 최소한의 것들을 원할 것이라고 제안하지만 가장 좋은 느낌을 사용하십시오.

다른 팁

Mandyk의 답변과 함께 가야 할 메모.

손으로 제조 파일을 만드는 것은 일반적으로 Linux 배포판/Unix 변형을 가로 질러 구축 할 수없는 방법입니다. 자동 생성을위한 빌드 시스템이 많이 있습니다. GNU Autotools, cmake, 스콘, , 등.

또한 구성에 대해 자세히 살펴보십시오.

  • 사용 가능한 컴파일러, 라이브러리, 시스템 아키텍처를 확인합니다.
  • 시스템이 적절한 호환 패키지 목록과 일치하는지 확인하십시오.
  • 빌드, 설치 경로, 옵션 패키지 등을 전문화하기 위해 명령 줄 인수를 지정할 수 있습니다.
  • 그런 다음 구성하면 시스템에 맞는 적절한 makefile을 생성합니다.

Make 파일 생성에 권장되는 가이드는 무엇입니까?

나는 그것을 읽어서 makefiles를 쓰는 방법을 배웠다 GNU는 매뉴얼을 만듭니다.

다른 Linux 소프트웨어를 살펴보면 거의 항상 '구성'파일이있는 것 같습니다. 정확히 무엇을합니까? 필요한 라이브러리가 설치되어 있는지 확인하거나 요구 사항을 확인하는 것 이상을 확인합니까?

구성 파일은 일반적으로 관련되어 있습니다 autotools. 스크립트의 이름에서 알 수 있듯이 소프트웨어를 구성 할 수 있습니다. 개발자의 관점에서 이것은 주로 라이브러리가 사용 가능한 변수를 결정하는 매크로를 설정하는 것을 의미합니다. 또한 라이브러리의 가용성을 테스트합니다. 결국 스크립트는 GNU MakeFile을 생성하여 실제로 소프트웨어를 빌드하고 설치하는 데 사용할 수 있습니다.

GNU 빌드 시스템은 많은 것 중 하나 일뿐입니다. 나는 GNU 빌드 시스템이 다른 것보다 느려지는 경향이 있고 못생긴 makefile을 생성하기 때문에 특히 마음에 들지 않습니다. 가장 인기있는 것들 중 일부는입니다 cmake, 잼 (잼 부스트 C ++에 관심이있을 수 있습니다) waf. 일부 빌드 시스템은 단순히 makefiles를 생성하는 반면, 다른 빌드 시스템은 완전히 새로운 빌드 시스템을 제공합니다. 간단한 프로젝트의 경우 손으로 Makefile을 작성하는 것이 쉽지만 "의존성 검사"(라이브러리 등)도 수동으로 수행해야합니다.

편집하다: Brian Gianforcaro 또한 이것을 지적했습니다.

당신의 질문은 너무 일반적이지만 여기에 내가 추천 할 내용이 있습니다.

  • 편집자 : VIM과 EMACS는 인기가 있습니다. 대부분의 도구와 마찬가지로 가장 중요한 것은 하나를 마스터하는 것입니다. VI (그 후손)가 어디에나 사용할 수 있기 때문에 VIM을 사용하는 것을 좋아하지만 특히 Linux에 머무르면 관련이 없을 수도 있습니다. 모든 프로그래밍 편집기는 괜찮습니다.

  • 구성 : 큰 프로젝트를 수행하지 않으면 귀찮게하지 마십시오. 사용하고 디버그하는 것은 악몽입니다. 프로젝트를 배포하려는 경우에만 의미가 있습니다.이 경우 오토 북을 읽으십시오. http://sources.redhat.com/autobook/. 다른 사람이 말했듯이 대안 (CMake, Scons 등)이 있습니다. 나는 Scons와 Autotools에 모두 익숙하지만 여전히 Small (몇 개의 파일) 프로젝트를 위해 Make를 사용합니다.

공유 라이브러리와 관련하여 : 공유 라이브러리와 직접 연결한다는 점을 제외하고는 거의 Windows입니다. Linux에는 .lib vs .dll 차이가 없습니다. 예를 들어. 기능이있는 하나의 라이브러리 foo의 경우 :

int foo(void)
{
     return 1;
}

다음과 같이 구축 할 것입니다.

gcc -fPIC -c foo.c -o foo.o
gcc -shared foo.o -o libfoo.so

메인 (물론 실제 생활에서 API를 헤더 파일에 넣습니다) :

int foo(void);

int main(void)
{
    foo();
    return 0;
}

그런 다음 다음과 같이 연결합니다.

gcc -c main.c -o main.o
gcc main.o -o main -L. -lfoo 

-L. -LFOO는 라이브러리 FOO와 링크라고 말한다 (Windows와는 반대로 링커가 현재 디렉토리에서 링커가 현재 디렉토리를 살펴보기를 원한다고 말합니다.

그래서 당신을 시작하기 위해 먼저 당신에게 이것을 지적 할 것입니다 가이드 Makefiles의 경우 일부 연결 장치도 다룹니다.
그것은 내 대학 컴퓨터 과학 교수가 우리에게 매우 명확하고 간결하고 매우 도움이된다는 것을 알게 된 작은 것입니다.

그리고 IDE는 사용합니다 일반적으로 makefile도 처리하기 때문입니다. Compile 및 표준 출력은 프로그램의 손가락 끝에 있습니다.
주로 Java 개발을위한 것이지만 C/C ++ 플러그인도 있습니다!

나는 책을 추천한다 유닉스 프로그래밍의 예술 ESR에 의해. 편집자, 프로그래밍 언어 등의 선택을 다룹니다. 또한 Unix 또는 Linux의 프로그래밍 배후에있는 사고 방식에도 적합합니다.

편집자의 경우 vim 또는 emacs를 원할 것입니다. 그것들은 모두 다르고 어떤 것이 더 나은 것이 다른 무엇보다 개인적인 취향에 관한 것입니다. 나는 vim을 사용합니다. 코드를 빠르게 이동하고 변경하는 데 좋습니다. 나는 Emacs를 많이 좋아하지 않았지만 많은 사람들이 그렇게합니다. EMACS는 매우 확장 가능하며 뉴스 리더부터 IDE에 이르기까지 모든 것에 사용할 수 있습니다. 둘 다 시도하고 당신이 좋아하는 것을보십시오.

  • 코드 편집자 권장 사항? 나는 현재 Nano를 사용하고 있으며 Vim과 Emacs에 대해 들었지만 각자의 이점이 무엇인지 모릅니다. 다른 사람이 있습니까? 왜 이전 세 가지 중 하나를 고려할 것인가? 참고 : 나는 IDE를 찾고 있지 않습니다.

Window Manager (KDE, Gnome 등)와 함께 Linux를 사용하는 경우 Window Manager의 표준 텍스트 편집기를 사용하는 것을 고려할 수도 있습니다. VIM/EMACS/NANO에 대한 주요 이점은 Windows 환경에서 온 사람에게 더 친숙해 보일 것이라는 점입니다. Window Manager에서 실행되도록 작성된 편집기에는 메뉴 표시 줄, 파일 열기/저장 대화 상자, 실행 취소/Redo가 있습니다. 콘솔 편집기가 일치 할 수없는 다른 많은 깔끔한 기능. (EMACS와 VIM은 요즘 매우 정교하지만 누가 아는가; -P)

KDE (내가 사용하는 것)에서는 KWRITE를 추천 할 수 있습니다. KWRITE는 잘 제공되지만 구문 강조 표시된 텍스트 편집기입니다. 또는 추가 기능이있는 더 멋진 텍스트 편집기 인 Kate는 세션 관리, 내장 터미널 패널, 자동 호출 make, 및 C/C ++ 심볼 뷰어를 포함한 여러 플러그인. 나는 보통 전체 IDE 프로젝트를 설정하는 데 귀찮게하고 싶지 않을 때 C ++ 작업에 Kate를 사용합니다. (Fyi KDE의 IDE는 Kdevelop입니다)

코드 편집자 권장 사항? 나는 현재 Nano를 사용하고 있으며 Vim과 Emacs에 대해 들었지만 각자의 이점이 무엇인지 모릅니다. 다른 사람이 있습니까? 왜 이전 세 가지 중 하나를 고려할 것인가? 참고 : 나는 IDE를 찾고 있지 않습니다.

VI와 EMACS는 두 개의 전형적인 유닉스 편집자입니다. IDE 대신 텍스트 편집기를 사용하는 경우 중 하나 또는 파생 상품 (VIM, XEMACS 등)이 갈 길입니다. 둘 다 기본적으로 또는 확장을 통해 구문 하이라이트 및 모든 종류의 기능을 지원합니다. 이 편집자의 가장 중요한 부분은 그들이 제공하는 확장 성입니다. 다양한 LISP를 통해 EMAC를, 자체 스크립팅 언어를 통해 vim.

나는 개인적으로 EMAC를 사용하므로 VIM에 대해 많이 말할 수는 없지만 온라인에 대한 많은 정보를 찾을 수 있어야합니다. EMACS에는 몇 가지 좋은 튜토리얼과 참조가 있습니다 이 하나.

편집 [2014 년 12 월] : 최근 크로스 플랫폼과 확장 가능한 편집자의 추세가있는 것 같습니다. IDE보다 적은 것을 원하지만 VI/EMAC 및 여러 플랫폼에서 네이티브 느낌보다 더 많은 그래픽을 원한다면 이것은 좋은 선택 일 수 있습니다. 나는 보는 것이 좋습니다 숭고한 또는 원자; 이 두 가지 모두 Windows/Linux/Mac에서 작업하며 플러그인과 테마의 훌륭한 커뮤니티가 있습니다.

G ++를 직접 호출하는 것과 Autotools 빌드 체인을 사용하는 것 사이의 공간은 상당히 좁습니다. Linux/Open Source World에서 사용할 수있는 '프로젝트'에 가장 가까운 Autotools를 능가하십시오.

Visual Studio에서 오는 사람에게는이 모든 명령 선분이 비호적이고 지저분 해 보일 수 있습니다. Bash Shell/Vim/Emacs 중독자로 변하기 전에 GUI 기반 도구 몇 개를 먼저 시도하여 전환 시간이 있습니다 ...

  • QT Creator Mini-ide가있는 QT 4.5. 이것은 경쟁에 앞서 최고의 프레임 워크이며 경쟁사입니다.
  • Eclipse (C ++) - Windows에서 이것에 대한 나의 경험에서, 나는 그것이 놀랍다는 것을 알았습니다 (이것은 아마도 지금까지 작성된 최고의 Java 응용 프로그램 일 것입니다).
  • Kdevelop
  • 안주타
  • Delphi를 사용하는 경우 Lazarus/Freepascal이 좋은 대안입니다.

나는 Longhairs가 Vim 또는 Emacs가 그들에게 가장 빠르고 빠른 개발 환경을 제공하지만 다른 사람들에게는 다른 스트로크를 제공한다고 주장 할 것이라고 확신합니다. IDE에 익숙한 사람은 전환하는 데 시간이 걸리거나 전혀 전환하고 싶지 않을 수도 있습니다. 모든 편집 능력에 대해 GUI 앱을 만드는 것은 80x25 도구의 작업이 아닙니다. 사물의 명령 줄을 가진 전문가가 되려면 몇 년이 걸리며, 다른 무엇보다도 세계관의 변화가 더욱 걸립니다.

여기에 올바른 답변 중에 부수적으로 .. Wind QT SDK. 그것은 집처럼 느껴질 것입니다 :-)

나는 Make 대신에 스콘을 사용하는 것이 좋습니다. 동일한 작업을 수행하지만 상자에서 사용하고 처리하는 것이 더 쉽습니다. 동적 라이브러리, 종속성 등을 만드는 방법. 여기서 간단한 프로그램의 실제 예입니다.

env = Environment()
env.Append(CCFLAGS='-Wall')
env.Append(CPPPATH = ['./include/'])

env.MergeFlags('-ljpeg')
env.ParseConfig("sdl-config --cflags --libs")
env.ParseConfig("curl-config --cflags --libs")
env.ParseConfig("pkg-config cairo --cflags --libs")

env.Program('rovio-pilot', Glob('./src/*.cpp'))

텍스트 편집기로서 저는 코딩에 대한 Jedit에 만족하지만 맛의 문제입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top