구조체 통신을 하고 있는데, 구조체를 헤더 파일로 만들어서 클라이언트와 서버가 서로 주고 받고 있습니다. 확장성을 높이기 위해서 LIB파일로 만들려고 하는데, 어떻게 해야 할지 갈피를 못 잡고 있습니다.
LIB는 윈도우에서 사용되는 정적 라이브러리 파일로 알고 있습니다.
리눅스에서 정적 라이브러리 파일은
.a 라는 파일로 만들게 되죠.
ar 이라는 명령으로 오브젝트 파일들의 아카이브를 만들어주고,
ranlib 라는 명령으로 만든 아카이브레 라이브러리 인덱스를 만들어주면
간단하게 정적 라이브러리 파일을 만드실수 있으실 겁니다.
정리하자면,
gcc -c xxx.c
ar rcv mylib.a xxx.o
ranlib mylib.a
와 같이 만드시면 됩니다.
더 자세한것은 kldp에서 Program-Library-HOWTO 라는 문서를 한번 찾아보세요.
============================== 꿈꾸는소년
패킷이라면,,,
동적으로 패킷을 정의 하는게 아니라면,, 구조체로 정의한 것일텐데 .h 가 lib에 포함 되는 것은 아니지요..
그냥 .h로 include 하는 것으로 간단히 해결 될듯 합니다.
울랄라~ 호기심 천국~!!http://www.ezdoum.com
info libtool
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html Korean Ver: http://cinsk.github.io/cfaqs/
음... 스레드와는 좀 관계가 없는 얘기지만... 절대로 구조체를 통째로 소켓에 보내지 마세요!
-_-; 구조체로 안하면 class로 하라는 말씀이신가요?
전 패킷을 class로 보내고 있는데
구조체나 class로 하는게 가장 편하지 않은지요? 왜 그런말씀을 하셧는지 궁금하네요
승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다. - 하비스
구조체에 들어가는 패딩때문에 서버나 클라이언트 둘중 하나가 다른 플랫폼으로 옮겨가면 제대로 작동하지 않을 가능성이 높아지지요.
패딩에 대한 이해가 충분하면 문제가 없지 않나요?
32비트 컴퓨터에서는
저 같은 경우 아예 모든걸 4바이트 단위로 끊어 맞춰
구조체나 클래스를 작성하거든요
C언어만으로 프로그램을 작성하시면 (대부분의 경우에)문제 없을것 같구여.. 자바, PHP, 비절베직 기타 등등 어떤 언어로 만든 어플리케이션이라도 통신가능하게 하려면 구조체나 클래스를 사용하지 마세여..
그럼 구조체를 보낼 때 어떻게 해야 하는거죠?
예를 들어서 struct aaa { int a; char b; }
이런걸 주고받을 때 일부러
struct aaa { int a; char b; char dummy1; char dummy2; char dummy3; }
로 만들어서 주고 받으라는 건가요?
설명 좀 해주세요. 패딩문제가 뭔지 어떻게 피할수 있는건지.
개념없는 초딩들은 좋은 말로 할때 DC나 웃대가서 놀아라. 응?
상관없지 않나요? 팩킹은 둘간에 통신에서 정의해야만 할것이고 필요하다면 1바이트 팩으로 처리하면 될것같고요. 바이트오더만 바꿔주면 문제 없을것 같은데요.
그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.
텍스트 포맷에 대한 자세한 정보
<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]
라이브러리에 대해..
LIB는 윈도우에서 사용되는 정적 라이브러리 파일로 알고 있습니다.
리눅스에서 정적 라이브러리 파일은
.a 라는 파일로 만들게 되죠.
ar 이라는 명령으로 오브젝트 파일들의 아카이브를 만들어주고,
ranlib 라는 명령으로 만든 아카이브레 라이브러리 인덱스를 만들어주면
간단하게 정적 라이브러리 파일을 만드실수 있으실 겁니다.
정리하자면,
gcc -c xxx.c
ar rcv mylib.a xxx.o
ranlib mylib.a
와 같이 만드시면 됩니다.
더 자세한것은 kldp에서 Program-Library-HOWTO 라는 문서를 한번 찾아보세요.
==============================
꿈꾸는소년
패킷이라면,,,동적으로 패킷을 정의 하는게 아니라면,,구조체로
패킷이라면,,,
동적으로 패킷을 정의 하는게 아니라면,,
구조체로 정의한 것일텐데
.h 가 lib에 포함 되는 것은 아니지요..
그냥 .h로 include 하는 것으로 간단히 해결 될듯 합니다.
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
info libtool
info libtool
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
음... 스레드와는 좀 관계가 없는 얘기지만... 절대로 구조체를 통
음... 스레드와는 좀 관계가 없는 얘기지만...
절대로 구조체를 통째로 소켓에 보내지 마세요!
-_-; 구조체로 안하면 class로 하라는 말씀이신가요? 전 패
-_-; 구조체로 안하면 class로 하라는 말씀이신가요?
전 패킷을 class로 보내고 있는데
구조체나 class로 하는게 가장 편하지 않은지요?
왜 그런말씀을 하셧는지 궁금하네요
승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스
구조체에 들어가는 패딩때문에 서버나 클라이언트 둘중 하나가 다른 플랫폼으
구조체에 들어가는 패딩때문에 서버나 클라이언트 둘중 하나가 다른 플랫폼으로 옮겨가면 제대로 작동하지 않을 가능성이 높아지지요.
패딩에 대한 이해가 충분하면 문제가 없지 않나요?32비트 컴퓨터에
패딩에 대한 이해가 충분하면 문제가 없지 않나요?
32비트 컴퓨터에서는
저 같은 경우 아예 모든걸 4바이트 단위로 끊어 맞춰
구조체나 클래스를 작성하거든요
승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스
C언어만으로 프로그램을 작성하시면 (대부분의 경우에)문제 없을것 같구여.
C언어만으로 프로그램을 작성하시면 (대부분의 경우에)문제 없을것 같구여.. 자바, PHP, 비절베직 기타 등등 어떤 언어로 만든 어플리케이션이라도 통신가능하게 하려면 구조체나 클래스를 사용하지 마세여..
질문
그럼 구조체를 보낼 때 어떻게 해야 하는거죠?
예를 들어서
struct aaa {
int a;
char b;
}
이런걸 주고받을 때 일부러
struct aaa {
int a;
char b;
char dummy1;
char dummy2;
char dummy3;
}
로 만들어서 주고 받으라는 건가요?
설명 좀 해주세요. 패딩문제가 뭔지 어떻게 피할수 있는건지.
개념없는 초딩들은 좋은 말로 할때 DC나 웃대가서 놀아라. 응?
상관없지 않나요?팩킹은 둘간에 통신에서 정의해야만 할것이고 필요하
상관없지 않나요?
팩킹은 둘간에 통신에서 정의해야만 할것이고
필요하다면 1바이트 팩으로 처리하면 될것같고요.
바이트오더만 바꿔주면 문제 없을것 같은데요.
그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.
댓글 달기