[질문] Mac OSX 10.4용 프로그래밍

bizzare의 이미지

win32/win64/Linux 용으로 만들어놓은 프로그램이 있습니다

GUI는 없으며

C++과 Fortran으로 빌드한 프로그램입니다.

그런데, 어쩌면 이번에 Mac용으로도 빌드해야할 지도 모릅니다. T_T
그런데 제가 Mac용 프로그래밍에 대해서는 전혀 아는 바가 없어서 질문 드립니다.

1) win32/win64/Linux용으로 만들어놓은 코드로
Mac OSX 10.4용에서 돌아가는 프로그램으로 Porting하려면 어느 정도의 노력이 필요할까요?
파일은 약 200개~300개짜리 소스입니다.(cpp, h합쳐서)
즉, 포팅 기간이 어느 정도 필요할까요?

2) C++용 컴파일러는 gcc 4.0.1을 쓴다고 합니다

Linux용을 gcc 4.0.1로 개발했는데,
그러면 그대로 빌드만하면 사용할 수 있을까요?

2-1) API는 바꿔줘야 겠지요.
2-2) 들리는 말에 의하면 Mac OSX 10.4의 경우, int, long등의 데이터 크기가 window와 달라서
컴파일러만 바꾸는 수준이 아니라 코드 자체를 뜯어고쳐야 할 수 있다고 하던데, 사실인지요.
사실이라면 어떤 부분을 수정해주어야 하는지요?

3) Fortran 컴파일러는 어떤 것들이 있나요?

4) 하드웨어 + OS + 컴파일러 구입비용은 어느 정도나 들까요?

답변 기다리겠습니다!!!

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

GCC에도 포트란 컴파일러가 들어있습니다.

http://gcc.gnu.org/fortran/

GCC는 GNU C Compiler가 아니라 GNU Compiler Collection의 약자거든요.

ganadist의 이미지

2-1) 어떤 API를 쓰셨는지 모르겠지만 posix 호환 함수를 사용했으면 별 달라질것 없을겁니다.

2-2) 64bit 모드면 달라지겠지만 32bit 모드면 다른 것 없습니다.

4) 하드웨어를 구입하면 OS, 개발도구 모두 딸려옵니다.

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

bemore의 이미지

2-2) 과거 ppc 의 경우나 그렇고요, Intel 기반 맥오에스의 경우 별로 차이 없다고 합니다.

Xcode 라는 자체 개발 툴로 C/C++, Object-C, pascal, Java 의 개발이 별도 설치 없이 가능합니다.

또한 터미널 환경(CUI)으로 Python, PHP, gcc, Pascal, Perl 등의 개발도 가능하고요.

그밖에도 풍부한 개발환경을 제공합니다.

hayarobi의 이미지

이전의 소스코드 상태에 따라 달라지겠죠. macosx도 gcc로 컴파일합니다. 애플의 IDE인 XCode도 gcc와 gdb의 GUI 프론트엔드라고 볼 수도 있습니다.

macos는 mach커널에 freebsd기반이 올라간 형태입니다. 제가 예전에 봤을 때 pthread라던가 일부 이벤트 처리쪽 부분에서 리눅스 좀 다른 것을 봤던 기억이 납니다. 이런 것 확인해 보시고요.

int와 long은 소스코드상에서 크기를 무조건 4바이트 8바이트 식으로, 혹은 int와 long이 같은 크기라는 것을 가정해서 프로그래밍 하지 않으셨다면 크게 문제될 게 없어 보이네요. 요 부분은 리눅스에서도 32비트와 64비트 양쪽을 다 지원하는 프로그래밍을 해 보셨으면 어느정도 경험을 쌓으셨으리라 생각됩니다.

그리고 신형 인텔맥이 아닌 ppc맥에서 구동하는 것도 고려해야할테니 endian문제도 고려해서 코딩했는지 확인을 해 보셔야할 듯 합니다. 한가지 예를 들자면..
struct foo {
int var;
int var2;
char chars[16];
}
....
struct foo astruct= ... ;
write(fd,&astruct,sizeof(struct foo));

식으로 구조체 메모리를 통째로 보내고 그것을 다른데서 통째로 받는 식으로 했다면 엔디안 문제로 데이터가 깨질 겁니다. 이런 것 말고도 int같은 것을 바이트 단위로 쪼개서 뭔가 하는 것도 신경써야 하고요.

=================
잠못자는 한솔아빠

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.