POSIX 에 대해서 질문있습니다.(유닉스버전을 리눅스로 포팅)

jamongx의 이미지

안녕하세요

저는 썬장비에서

솔라리스9에서 GCC 3.4.6을 가지고 프로그래밍을 하고 있는데요

멀티쓰레드도 사용하고 그럽니다.

저희 회사 윗분(^^;) 께서

솔라리스나 리눅스(인텔기반)나 POSIX 기반이기 때문에

리눅스로 포팅하는데 금방 될거라고 말씀하시네요

지금 개발하는것이 규모도 꽤 있기도하고

제가 가진 짧은 지식으로는 리눅스와 솔라리스에서 사용하는 gcc가 버전이

같다고 하더라도 자잘하게 차이가 있는것으로 알고 있습니다.

그래서 포팅하는데 시간도 어느정도 필요하고(바이트 오더 바꾸는데도 시간 필요하고)

포팅이 다 되더라도 안정성에서는 문제가 생길수 있다고 말씀드렸는데

그 다지 믿지 않으시는것 같네요 ㅜㅜ (일주일만에 하라고 그러면 안되거든요 ㅜㅜ)

혹시 동일한 문제로 경험을 가지고 계시면

조언 부탁드리겠습니다.

리눅스 쪽에 경험이 많지 않아 주의해야 될 부분도 알려주시면 감사하겠습니다.

그럼 수고하십시요

bootmeta의 이미지

solaris상에서 얼마나 posix 규칙에 작성했느냐가 관건이 될 것 같습니다.
그리고 포팅할 프로젝트 내용이 어떤 것인가도 영향을 미치리라 보입니다.
기존 project가 gcc로 개발되었다면 그나마 좀 편할 겁니다.
가장 문제가 될 수 있는 복병은 thread 관련 문제일 듯 싶군요.
같은 thread 라이브러리를 쓰더라도 platform 따라서 이상 동작이 발생할 지도 모르겠습니다.

아래 pdf 문서는 solaris to linux porting guide 입니다.
약간 오래된 문서이기는 해도 간단하게 읽어볼 만 할 겁니다.

http://people.redhat.com/drepper/sol-porting.pdf

익명사용자의 이미지

이런 자료가 있었군요
잘 보겠습니다. ^^;

익명입니다의 이미지

특정 OS가 posix-compliant하다고 해서 그 OS의 프로그램이 포팅하기 쉬운지는 알 수 없습니다.

일단 Solaris의 경우 POSIX에 맞는 라이브러리가 있고, 거기에 Solaris의 확장이 있습니다. 만약 해당 프로그램이 이 POSIX에 맞는 부분만을 사용했다면 포팅이 쉽고, 그 외에 동작도 어느 정도 보장 받을 수 있습니다. (물론 POSIX의 undefined를 심하게 사용했다면 또 다르지만..)

하지만 그렇지 않고 Solaris에 의존적인 부분이 많이 들어갔다면 포팅이 좀 더 힘들 수 있죠.

익명사용자의 이미지

OS에 의존적인 부분이 없다고 가정하고

경험상 int정렬문제, byte order를 제외하고 거의 손댈것 없어요.
통신이 필요없다면 byteorder는 신경쓸 필요가 없고요
헤더파일 손보는정도 unix에 숙달되었다고 한다면
포팅 위한 코드 수정하는것 넉넉잡고 2~3일이면 됩니다.

근데 방대한 양이면 1주일로는 조금 무린 듯 하군요.
테스트하는데 시간이 좀 걸리죠. 몇개 정도는 문제가 발생합니다.
그중에 기존플랫폼에선 버그인데도 안나타나고 옮긴플랫폼에서 가끔발생하는 경우도 있고
아무튼 전체 테스트는 반드시 필요해요.

gamdora의 이미지

통신이 필요 없어도 이진 파일 입·출력을 한다면

byteorder는 신경써야 하지 않을까요?

익명사용자의 이미지

네 신경써야 겠죠.
생성된 파일을 타 플랫폼과 공유하는가에 따라 달라지겠죠.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.