기본적인 라이브러리에 대한 설명같은 것을 볼 수 있는 것들이 있나요?

안녕하세요

윈도우에서는 msdn을 사용하면 입문자에게는 정말… 백과사전 이상의 효과를 볼 수 있잖아요…

리눅스를 시작하면서

윈도우에서 구현한 소스를 그대로 사용을 해봤는데요

c코드 이고…

라이브러리로 math, time, stdio, stdlib 사용하였는데요

sqrt( )를 찾을수 없다고 나오네요…

오류메시지로 떴는데요
sga.c:(.text+0x64d): undefined reference to `sqrt’
collect2: ld returned 1 exit status

이말이 결국엔 못찾는다는건데.ㅠ

이럴경우에는 어떤식으로 해결을 하나요??

보통 윈도에선 MSDN에 의존하다보니.ㅠㅠ

흠… manpages-dev , devhelp 인가 깔았는데

어떻게 사용하는지를 모르겠어요… 도와주세요^^

manpages-dev 하면 되지 않나요?

터미널에서 다음 명령을 쳐보세요.

[code:1yavyz35]man sqrt [/code:1yavyz35]

http://errlist.com/man/SQRT.3.html 이런 식으로 나옴

참고로 math 쪽 함수들은 컴파일 시 -lmath 던가요? 추가해야 됨

[quote="haze11":12zqlukp]manpages-dev 하면 되지 않나요?

터미널에서 다음 명령을 쳐보세요.

[code:12zqlukp]man sqrt [/code:12zqlukp]

http://errlist.com/man/SQRT.3.html 이런 식으로 나옴

참고로 math 쪽 함수들은 컴파일 시 -lmath 던가요? 추가해야 됨[/quote:12zqlukp]

전… 다르게 해야 하는줄 알고욥 ==;;흠
manpages-dev 가 안되길래요;;
바로하면 되는군요…
근데 -lmath는 찾을수 없다고 나오네욥…쩝;;

윈도우에서는 잘 되던게 리눅스에서 안된다면 어떤 문제일까요>??
어려운 기능을 넣은것도 아닌데요…ㅠㅠ

비쥬얼C로 하는 프로그램 기법하고 리눅스에서 gcc로 하는 프로그램 기법하고 차이나는 부분이 있나요??

명령어는 gcc -W -Wall -O2 -o sg sga.c 이렇게 하였는데요

sg를 본 결과 segmentation fault 라고 뜨는데요…

ㅠㅠ 비쥬얼에서는 됐는뎀.ㅠㅠ OTL

[quote="mrhyunby":1fr37p62]근데 -lmath는 찾을수 없다고 나오네욥…쩝;;[/quote:1fr37p62]

man sqrt 해보면 앞부분에 이런 내용이 나옵니다.

[code:1fr37p62]#include <math.h>

   double sqrt(double x);
   float sqrtf(float x);
   long double sqrtl(long double x);

   Link with -lm&#46;

[/code:1fr37p62]

컴파일시 줘야하는 링크 옵션은 -lmath가 아니라 -lm 임을 알수 있네요.

[quote="mrhyunby":3p4yz05p]윈도우에서는 잘 되던게 리눅스에서 안된다면 어떤 문제일까요>??
어려운 기능을 넣은것도 아닌데요…ㅠㅠ

비쥬얼C로 하는 프로그램 기법하고 리눅스에서 gcc로 하는 프로그램 기법하고 차이나는 부분이 있나요??
명령어는 gcc -W -Wall -O2 -o sg sga.c 이렇게 하였는데요
sg를 본 결과 segmentation fault 라고 뜨는데요…

ㅠㅠ 비쥬얼에서는 됐는뎀.ㅠㅠ OTL[/quote:3p4yz05p]

제가 생각하기에는 비주얼 스튜디오가 프로그래머의 실수에 좀 더 너그럽습니다.
(뭐 달리 말하면 윈도우의 메모리 관리가 엄격하지 못하고 느슨하다고 볼 수도 있겠습니다.)
컴파일하고 실행했는데 세그먼트 오류가 났다면 분명 코드에서 메모리를 잘못 사용하는 부분이 있을겁니다.
(버퍼의 인덱스를 넘어서 사용했다던가…)
C++은 범위를 넘어가는 것을 문제삼지 않아서 디버깅하느라 고생한 경우가 있습니다. 특히 VC++로 컴파일해서 돌리면 아무 문제없이 실행될 때가 종종 있고… 전혀 엉뚱한데서 세그먼트 오류가 날 때도 있구요.
(이런 경우 보통 실행시에는 문제가 안 보이므로 디버깅하기 어렵죠. VC++은 const에 대해서도 상당히 느슨해서 내용을 보호하기 위해 const 선언했음에도 불구하고 다른 사람의 잘못된 메모리 쓰기 코드로 인해 내용이 손상된 경험도 있습니다.)
실제로 MS에서 제공하는 COM의 일부 매크로 코드 중에는 문자열 변환할 때 alloc을 남발해 놓고 free하지 않는 코드들도 꽤나 있더군요.

저도 gcc는 잘 사용하지 않지만…
제가 주로 사용하는 비주얼 스튜디오의 컴파일러가 너무 관대하다고 생각하고 있기 때문에…
코드를 먼저 디버깅해 보시길 권합니다.

[quote="mrhyunby":2x5phtmm]안녕하세요

윈도우에서는 msdn을 사용하면 입문자에게는 정말… 백과사전 이상의 효과를 볼 수 있잖아요…

리눅스를 시작하면서

윈도우에서 구현한 소스를 그대로 사용을 해봤는데요

c코드 이고…

라이브러리로 math, time, stdio, stdlib 사용하였는데요

sqrt( )를 찾을수 없다고 나오네요…

오류메시지로 떴는데요
sga.c:(.text+0x64d): undefined reference to `sqrt’
collect2: ld returned 1 exit status

이말이 결국엔 못찾는다는건데.ㅠ

이럴경우에는 어떤식으로 해결을 하나요??

보통 윈도에선 MSDN에 의존하다보니.ㅠㅠ

흠… manpages-dev , devhelp 인가 깔았는데

어떻게 사용하는지를 모르겠어요… 도와주세요^^[/quote:2x5phtmm]

디폴트 설치한 다음에 패널에 헬프 아이콘 누르면 우분투 헬프 센터가 뜰거에요. 거기 맨 아래에 Advanced Topic 있구요 거기가면 Writing Your Own Programs 있습니다. (한글버전은 번역되 있겠죠) 거기서 설명한대로 패키지 설치하면 IDE 환경에서 C/C++ 개발할 수 있어요. C# .NET두 우분투에서 되구요. JAVA두 되구요.

조금 더 연구하고 시작하면 MS윈도우에서 프로그래밍 경험이 있었다면 우분투에 적응하는데 크게 어렵지 않을 거에요.

골수 해커 전통을 따르고 싶다면 이딴거 쓰지 마시구 emacs 하나만 써서 다 해결해두 되구요 :lol: