[질문] 솔라리스 환경에서 mysql c api 이용하기.

hurryon의 이미지

음냐. 안녕하세요. 솔라리스에서 mysql 에서 제공하는 c api 을 이용해
프로그래밍을 해보려고 합니다. 막히내요. 일단 리눅스 서버에서
테스트로 작업을 했었는데 솔라리스에서는 잘 안되네요.

환경은 다음과 같습니다.

솔라리스 2.7
gcc 2.95.2
mysql-3.22.32-sun-solaris2.7-sparc.tar (바이러니 버전)

테스트 소스는 다음과 같습니다.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql.h>
#include <errno.h>

MYSQL mysql;

void prolog();
void epilog();

void prolog()
{

    mysql_init(&mysql);

    if(!mysql_real_connect(&mysql, NULL, "hurryon", "1111", NULL, 3306, (char *)NULL, 0))
    {
        fprintf(stderr, "%s\n", mysql_error(&mysql));
        exit(1);
    }

    printf("DB Connected\n");
}

void epilog()
{
    mysql_close(&mysql);
}

int main(int argc, char *argv[])
{
    FILE *in, *out;
/*
    static char line[10];
    static char *keyword[100];
    static char code_id[6];
    static char precode_id[6];
*/
    int i, j, k, m;
    int docu_size, stat;
    int line_len, line_num;

    stat = 0;
    docu_size = 0;

    if(argc != 2)
    {
        fprintf(stderr, "m1 back_data\n");
        exit(1);
    }

    if(!(in = fopen(argv[1], "r")) || !(out = fopen("data.info", "w")))
    {
        fprintf(stderr, "input file not found or file create error\n");
        exit(1);
    }

    prolog();

    epilog();

    return(0);
}

에러는 다음과 같이 나옵니다.

nscode:~/work/mysql$ gcc -o m1 m1.c -I/usr/local/mysql/include -L/usr/local/mysql/lib -lmysqlclient
Á¤ÀÇ&ÇÁ& ¾ÊÀ½ ù¹ø° Â&Á¶&È
±&È& ÆÄÀÏÀÇ
socket /usr/local/mysql/lib/libmysqlclient.a(libmysql.o)
gethostbyname /usr/local/mysql/lib/libmysqlclient.a(libmysql.o)
setsockopt /usr/local/mysql/lib/libmysqlclient.a(libmysql.o)
getservbyname /usr/local/mysql/lib/libmysqlclient.a(libmysql.o)
floor /usr/local/mysql/lib/libmysqlclient.a(password.o)
getsockopt /usr/local/mysql/lib/libmysqlclient.a(libmysql.o)
inet_addr /usr/local/mysql/lib/libmysqlclient.a(libmysql.o)
shutdown /usr/local/mysql/lib/libmysqlclient.a(libmysql.o)
connect /usr/local/mysql/lib/libmysqlclient.a(libmysql.o)
ld: Ä¡¸&À&: ±&È& Â&Á¶ ¿À·&. m1¿¡ Ã&·ÂÀÌ ±&·Ï&ÇÁ& ¾ÊÀ½
collect2: ld returned 1 exit status
nscode:~/work/mysql$

으흠. 리눅스 테스트 서버에서는 잘 컴파일되고 실행이 된 소스인데...솔라리스
에서는 이렇게 에러가 나내요.

혹시 라이브러리가 등록되지 않아서 그런가요?

리눅스라면 /etc/ld.so.conf 파일에 등록 시켜놓고 ldconfig 로 등록을 시킬
텐데 솔라리스 환경은 처음이라.

고수님들의 가르침을 부탁합니다.

agolta의 이미지

setenv LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib
한번 해보세요. 솔라리스 만진지 10년이 지나서 맞는진 모르겠네요.
ㅋㅋ

hurryon의 이미지

셸은 배쉬입니다. 그리고 .bashrc 파일에 다음과 같이 정의해 놓아 두었는
데도 마찬가지 입니다요.

ㅡ.ㅡ;;

export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/usr/local/mysql/lib

에휴...

jolasen의 이미지

Quote:

gcc -o m1 m1.c -I/usr/local/mysql/include -L/usr/local/mysql/lib -lmysqlclient

에서..
gcc -o m1 m1.c -I/usr/local/mysql/include -L/usr/local/mysql/lib -lmysqlclient -lsocket -lnsl -lm

Quote:
-lsocket -lnsl -lm

추가
hurryon의 이미지

-lsocket -lnsl -lm

옵션을 붙이니 컴파일이 제대로 됩니다!!! 감사합니다. 혹시 각각의
옵션이 무엇을 뜻하는지요?

:-)

jolasen의 이미지

socket,nsl,math라이브러리를 링크하는겁니다.

ps..floor가 있었네요.. - -;

댓글 달기

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