[질문]윈도우 어플리케이션을 리눅스로 포팅

zipsinworm의 이미지

윈도우 어플리케이션을 리눅스로 포팅 하려고 합니다.

서버/클라이언트 프로그램인데(소켓사용)

어디부터 시작해야 할지 모르겠습니다.

여기저기 게시판을 찾아보니 와인이라는 프로그램을 사용하면 된다고 하던데

그 프로그램 사용하지 않고 포팅하고 싶습니다.

제 생각으론 클라이언트 라이브러리부터 하나씩 컴파일해서 오류를 잡는것이 우선이라고

생각합니다.

포팅을 직접 해보신 분이나 리눅스를 잘 사용하시는 분들께 조언 구합니다.

bejoy4him의 이미지

C로만 짰다면 모를까 여기 저기 수정할 곳이 많을 겁니다.

프로그램에 GUI가 있다면 그 쪽 부분은 완전히 들어내야 할거구요.
MFC에서 제공하는 각종 Class들을 사용하셨다면 그것들 역시 제거하셔야 할 것이고...

단순히 콘솔 프로그램으로 만든 것이 아니라면,
포팅 수준이 아니라 재작성이라고 생각하시길...

콘 솔 프로그램이라면 어렵지 않군요.

쓰레드와 관련한 사항은 POSIX 쓰레드로 대체하면 될테구
Winsock관련한 함수들은 일반적인 BSD 소켓함수들로 대체
혹시 IOCP와 같은 것을 사용하였다면 epoll 같은걸루 대체..

zipsinworm의 이미지

프린터 어플리케이션인데 윈도우용을 리눅스로 포팅하는 작업입니다.
리눅스에서 윈도우 GUI를 구현한다는것은 bejoy4him님 말씀대로 처음부터 새로 작성하는게 낳을듯 싶어요.
윈도우 자체 API도 있으니.. 그래서 콘솔상에서 동작하는 기능만 생각하고 있습니다.

여기저기 알아봐도 포팅에 관한 자료는 자세히 나와있지도 않네요..
꼭 포팅을 성공해서 리눅스 고수(그렇게 생각하지 않지만..)의 길로 가는 첩경이라고 생각합니다.
다른 조언도 있으시면 많이많이 해주세요.

thyoo의 이미지

___________________________________
Less is More (Robert Browning)

Necromancer의 이미지

1. win32API로만 짠 경우
-> 윈도우API관련부분만 수정
-> 소켓함수는 큰 변경 필요 없음
(HANDLE -> int, closesocket() -> close(), 그 외 시그널처리 로직 변경 정도)

2. MFC로 짠 경우
-> API, MFC 메시지 처리부분을 다 들여냄
-> 각 클래스의 메소드에 분산되어 있는 실행코드들을 통합할 필요 있음

제가 봤을 때는 1번으로 만든 프로그램은 수정을 하면 끝나지만,
2번에 해당되는 프로그램이라면 규모가 장난 아닐 겁니다.
특히 2번에다가 문자열을 다 CString으로 처리하고, MFC클래스내에
자료를 저장하는 식으로 구현했다면 다시 만드는게 나을수도 있습니다.
소켓도 MFC소켓클래스 썼다면 다시짜야합니다.
(MFC프로그램 빨리 만들려고 할때 이런식으로 구현 많이 하더군요)

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

댓글 달기

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