'linux'에 해당되는 글 5건

  1. 2007.04.06 MySQL 깨진 Table 복구하기 (1)
  2. 2007.04.05 mysql 전체 백업 및 복구 (2)
  3. 2007.04.05 [링크] MySQL 로그 해석 (2)
  4. 2007.04.05 [링크] Google동영상 - Performance Tuning Best Practices for MySQL (1)
  5. 2007.03.10 GCC (2)
2007.04.06 10:15
[Q] mysqldump 를 이용하여 DB 백업시 아래와 같은 에러메시지가 뜨면서 백업이 중단된 경우.
mysqldump: Error 1030: Got error 127 from table handler when dumping table 't3_tts_trackback' at row: 202483

백업시 생성된 sql 파일의 내용을 조회하여 어떤 DB의 table에서 에러가 발생하였는지를 체크한다.
에러가 발생한 라인에서 부터 위로 올라가면서 USE xxx ; 부분을 찾으면 해당 DB를 찾을 수 있다.
원하는 DB를 찾았다면 mysql 에 접속하여 use '문제DB명' 명령을 수행하여 DB에 접근한 후
아래와 같이 repair 명령을 사용해 복구한다.

mysql> repair table t3_tts_trackback;
+-----------------+--------+----------+--------------------------------------------------------+
| Table           | Op     | Msg_type | Msg_text                                               |
+-----------------+--------+----------+--------------------------------------------------------+
| comeng.t3_tts_trackback| repair | info     | Wrong bytesec: 110-103-46 at 43677776; Skipped         |
| comeng.t3_tts_trackback| repair | info     | Found block with too small length at 43597900; Skipped |
| comeng.t3_tts_trackback| repair | warning  | Number of rows changed from 30193 to 30194             |
| comeng.t3_tts_trackback| repair | status   | OK                                                     |
+-----------------+--------+----------+--------------------------------------------------------+
4 rows in set (2.16 sec)

Posted by kimgisa.net
2007.04.05 21:50
MySQL DB전체 백업하기
#mysqldump --opt -A -u root -p > all_backup.sql

복구하기
# mysql -u root -p < all_bakup.sql
Posted by kimgisa.net
2007.04.05 21:09
2007.04.05 15:18
2007.03.10 18:00

GCC의 실행

gcc [-o outputfilename] [-c] [-g] [-O | -O2] [-Idirectory] [-Ldirectory] [-llibrary] sourcefilename

 gcc를 실행하기 위해서는 반드시 소스 파일을 적어주어야 하며 나머지 사항들을 컴파일을 위한 옵션들로 필요에 따라 적거나 생략할 수 있습니다. 또한 모든 옵션은 적는 순서와 상관이 없이 똑같은 기능을 합니다.

GCC의 옵션

  • -c
     이 옵션을 사용하면 링크의 과정은 생략되고 컴파일만 수행합니다. 만약 이 옵션이 사용된다면 링크와 관련된 -l 또는 -L 옵션은 무시됩니다.
  • -o outputfilename
     컴파일한 결과를 저장하는 파일명을 직접 지정해 주는 옵션입니다. 이 옵션이 사용되지 않으면 기본적으로 a.out이라는 실행 파일이 생성되며, -c 옵션이 주어졌을 때는 sourcefilename.o 파일이 생성됩니다. 기본적으로 생성되는 파일명을 원하지 않을 경우 이 옵션을 사용하여 바꿔주면됩니다.
  • -g
     실행파일을 생성할 때, 디버거를 위한 변수테이블을 함께 생성해 준다. 만약 이 옵션을 사용하지 않으면, 디버거를 사용할 수 없습니다.
  • -O 또는 -O2
     optimization을 지시해주는 옵션입니다. -O를 사용하였을 때보다 -O2를 사용하면 프로그램의 크기가 더 줄어듭니다. 물론 아무것도 사용하지 않은 것보다는 당연히 크기가 줄어들겠지요? 최적화에 대한 자세한 내용은 ``GCC-개요''의 ``최적화'' 기사를 참조하시기 바랍니다. 가끔은 -O2를 사용하면 프로그램의 수행 속도가 현저히 저하되기도 합니다. (특히 GCC의 옛날 버전)
  • -Idirectory
     이 옵션은 header파일을 찾는 root디렉토리를 적어주는 옵션입니다. 만약 C source파일에서

    #include <myheader.h>

    라고 적어 주었을 때, 만약 /usr/local/include 나 /usr/include 또는 GCC설치디렉토리/include 에 위치하고 있지 않다면 header파일을 찾을 수 없다는 에러를 발생시키게 되는데, 이 -I 옵션을 사용하여 myheader.h 파일이 위치한 디렉토리를 적어주면 header파일을 잘 찾을 수 있게 된다. 이 옵션은 프로그램의 크기가 커져서 현재 디렉토리가 아닌 곳에 header파일들을 모아 두었을 때나, X-window 프로그래밍과 같이 C의 표준 제공 라이브러리가 아닌 추가된 파이브러리의 header파일들이 저장된 디렉토리를 지정할 때 유용하게 사용될 수 있다.

  • -Ldirectory
     이 옵션은 ld 인 링커프로그램에 의해서 참조된다. *.so.*의 이름을 갖는 동적라이브러리나 *.a 또는 *.sa.*의 이름을 갖는 정적라이브러리들이 위치한 디렉토리가 /usr/lib 나 /usr/local/lib 또는 GCC설치디렉토리 가 아닌 경우 이곳에 그 디렉토리 이름을 적어주어야 만이 제대로 링크가 된다. 이 옵션을 잘 지정해 주지 못하면
    Undefined first referenced symbol in file test_me /var/tmp/cca001l81.o ld: fatal: Symbol referencing errors. No output written to a.out

    와 같은 에러가 나온다.

  • -llibraryname
     -L 옵션과 함께 사용되면서 사용할 라이브러리를 직접 지정해 주는 것이다. lib*.a 의 이름을 갖는 라이브러리에서 `*'부분을 libraryname부분에 적어주면 된다. 예를 들어 sin()이나 cos() exp()와 같은 수학함수를 사용하였을 경우 ``-lm'' 이라고 적어주어야만 바로 위의 -L옵션 설명에서 나왔던 것과 같은 에러가 발생하지 않는다. -L옵션과 마찬가지로 이 옵션을 잘못 설정하면 같은 ``Undefined symbol''에러가 발생한다.

실행 예제

gcc -g -I/usr/dt/include -I/usr/openwin/include -I/usr/ucbinclude -L/usr/dt/lib -L/usr/openwin/lib -L/usr/ucblib -D_NO_PROTO -c run.c
gcc -o vision -g -I/usr/dt/include -I/usr/openwin/include -I/usr/ucbinclude -L/usr/dt/lib -L/usr/openwin/lib -L/usr/ucblib -D_NO_PROTO graphic.o image_display.o image_load.o view.o memory.o dsp.o run.o -lXm -lXt -lXext -lX11 -lsocket -lgen -lm

 인클루드나 라이브러리 옵션을 동시에 여럿 선언할 경우 앞에서 부터 참조하게 된다. 그러므로 만약 똑같은 이름의 헤더파일이나 라이브러리 파일이 여러군데 존재할 경우 이 옵션을 사용해서 사용자가 우선순위를 정해줄 수 있다. 첫줄의 명령어는 run.c를 컴파일해서 run.o 라는 오브젝트 파일을 만들어 주는 것이고, 아랫줄의 명령어는 image_display.o ~ run.o 파일들을 Xm, Xt, Xext, X11, socket, gen, m 의 라이브러리를 사용해서 링크시켜주는 명령어 입니다. (참고로 이 명령 줄은 make에 의해서 자동으로 입력된 내용입니다.)

C++의 사용

 C++의 프로그램은 확장자가 ".cc", ".cxx" 또는 ".C" 를 가집니다. 만약 gcc의 명령을 사용하여 그와 같은 확장자를 갖는 파일을 컴파일하게 되면 gcc는 자동으로 그것들을 C++이라고 인식합니다. 그러나 사용자가 C++임을 명확히 하여 컴파일을 하는 것이 좋은 데, 이 때 g++ 이라는 명령을 사용하면 됩니다.

 명령어 뒤에 붙여 주는 옵션들은 GCC와 거의 같기 때문에 ( 사실은 gcc와 g++은 동일한 프로그램입니다. ) 위에서 설명한 GCC의 옵션들을 그대로 사용할 수 있습니다. C컴파일 설명에서 프로그램 이름만 g++ 로 바꿔주면 됩니다.

g++은 ISO/ANSI Standard C++을 지원합니다.

Posted by kimgisa.net