솔라리스의 <sys/ddi.h>파일의 역활과 리눅스

leolo의 이미지

솔라리스의 <sys/ddi.h>파일의 역활과
리눅스에서의 대용 파일이 뭐죠..
지금 솔라리스 코드를 컴파일하는데. 그냥 주석처리 하니까
컴파일이 됩니다.
그냥, 이대로 진행해도 되는지 알고 싶습니다.

또, 솔라리스의 libxnet.so 동적라이브러리는
무엇을 하는 것인지요. 리눅스에서 컴파일하는데 -lxnet 옵션을
지우고 합니다. 그래도 될런지 알려주세요..

또, 컴파일 옵션중 -lsocket -lnsl 은 리눅스에서 없어도 되는지요.
앞에 것은 없어도 되겠지만, 뒤의 -lnsl은 무엇이고
없어도 되는지.. 리눅스에 libnsl.a 파일이 있는데
솔라리스 것이랑 같은 역활을 하는지요.
질문이 많죠..
하나라도 답변이 되었으면 합니다..

부탁드립니다.

mach의 이미지

초기 Unix가 BSD기반, System V기반에서 출발하여 춘추전국을 걷다가
SVR4(System V Release 4)로 통합된것은 아시리라 믿습니다.
HP유닉스와 SUN유닉스도 각기 특색을 가지고 출발했습니다.
리눅스도 나름대로의 특색을 가지고 있었습니다.

HP의 경우, 2가지 유형의 소켓을 지원했는데, BSD 4.2 스타일 소켓과 (이것은
libc로 링크하면 되지요) UNIX95/98유형(libxnet으로 링크)이 있습니다.
Sun의 경우도 과거 통합이전의 라이브러리 유형과 이후 유형(xnet)이 존재합니다.
즉, 표준인 X/Open networking interfaces 를 제공하지 않으면 안되지요.

HP와 SUN의 경우 X/Open networking interfaces를 모두 지원하며,
이를 사용하려면 명시적으로 그 사용을 명세해야 합니다.즉, 링커옵션으로 -lxnet처럼 기술하거나,
HP의 경우 아예 컴파일시 특정 문장을 선언해 주어야 합니다.
XOPEN_SOURCE와 _XOPEN_SOURCE_EXTENDED를 말입니다.
#define _XOPEN_SOURCE_EXTENDED 1
모 이런식으로요.

리눅스는 UNIX98스타일을(libc) 지원하기 때문에 구지 링크할 필요는 없는것으로
알고 있습니다. 버전업하면서 아예 통합한것으로 압니다.
약간의 타입선언이 차이를 보이기는 하지만, 대체로 무리없이
사용가능한것으로 알고 있습니다.

*정리하자면, 소켓의 경우 리눅스->SUN 또는 HP로 포팅할때는 라이브러리를
명시적으로 링크해야하며, 또는 특정 변수를 Makefile이나 Source에 선언해주
어야합니다. 반대라면, 특성을 테스트 해보시고 그대로 적용하시면 되겠습니다.

* X/Open networking interfaces를 사용해서 개발하지 않았다면, 대체로
비슷하게 동작할것으로 보이지만, 검토는 역시 필요합니다.

** 주의사항:
제가 환경이 열악해서리( :oops: ) HP, SUN 본지가 몇년되었습니다.
HP/SUN/LINUX/등 포팅을 최근에는 별로 해보지를 못했습니다.
그래서, 이 답변은 그냥 참고정도로 받아들이심이 옳겠습니다.
http://bbs.kldp.org/viewtopic.php?t=27449&highlight=_XOPEN_SOURCE_EXTENDED
http://bbs.kldp.org/viewtopic.php?t=20791&highlight=_XOPEN_SOURCE_EXTENDED
.....
음 이것보다는 http://bbs.kldp.org/search.php
에서_XOPEN_SOURCE_EXTENDED로 검색해보세요.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

leolo의 이미지

제가 솔라리스코드를 리눅스로 바꾸니까..
별문제 없이 돌아가더군요..
-lxnet 옵션을 지우고도 잘 돌아갑니다.

그럼 별 문제 없겠죠..

실력이 있으면 삶이 편하다... 영차 영차...

댓글 달기

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