더북(TheBook)

컴파일까지 이제 한 단계가 남아 있다. RMySQL 컴파일 시 libmysql.lib 파일을 찾는 위치는 MySQL 설치 시의 기본 파일 위치와 다르다. 이를 해결하기 위해 파일 C:\Program Files\MySQL\MySQL Server 5.6\lib\libmysql.lib를 C:\Program Files\MySQL\MySQL Server 5.6\lib\opt\libmysql.lib에 복사한다. opt 디렉터리는 존재하지 않으므로 직접 만들고 파일을 복사해 넣으면 된다.

모든 준비가 끝났으니 R 콘솔을 열고 install.packages( )로 컴파일을 해보자.9

> install.packages("RMySQL", type = "source")
Installing package into 'C:/Users/MKSEO/Documents/R/win-library/3.0'
(as 'lib' is unspecified)
trying URL 'http://cran.nexr.com/src/contrib/RMySQL_0.9-3.tar.gz'
Content type 'application/x-gzip' length 165363 bytes (161 Kb)
opened URL
downloaded 161 Kb

* installing *source* package 'RMySQL' ...
** package 'RMySQL' successfully unpacked and MD5 sums checked
checking for $MYSQL_HOME... C:\Program Files\MySQL\MySQL Server 5.6
cygwin warning:
  MS-DOS style path detected: C:\Program
  Preferred POSIX equivalent is: /cygdrive/c/Program
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
test: Files\MySQL\MySQL: unknown operand
** libs
Warning: this package has a non-empty 'configure.win' file,
so building only the main architecture

cygwin warning:
  MS-DOS style path detected: C:/PROGRA~1/R/R-30~1.3/etc/i386/Makeconf
  Preferred POSIX equivalent is: /cygdrive/c/PROGRA~1/R/R-30~1.3/etc/i386/Makeconf
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
gcc -m32 -I"C:/PROGRA~1/R/R-30~1.3/include" -DNDEBUG -I"C:\Program Files\MySQL\MySQL Server 5.6"/include -I"d:/RCompile/CRANpkg/extralibs64/local/include" -O3 -Wall -std=gnu99 -mtune=core2 -c RS-DBI.c -o RS-DBI.o
RS-DBI.c: In function 'RS_na_set':
RS-DBI.c:1219:11: warning: variable 'c' set but not used [-Wunused-but-set-variable]
gcc -m32 -I"C:/PROGRA~1/R/R-30~1.3/include" -DNDEBUG -I"C:\Program Files\MySQL\MySQL Server 5.6"/include -I"d:/RCompile/CRANpkg/extralibs64/local/include" -O3 -Wall -std=gnu99 -mtune=core2 -c RS-MySQL.c -o RS-MySQL.o
RS-MySQL.c: In function 'RS_MySQL_fetch':
RS-MySQL.c:657:13: warning: variable 'fld_nullOk' set but not used [-Wunused-but-set-variable]
RS-MySQL.c: In function 'RS_DBI_invokeBeginGroup':
RS-MySQL.c:1137:30: warning: variable 'val' set but not used [-Wunused-but-set-variable]
RS-MySQL.c: In function 'RS_DBI_invokeNewRecord':
RS-MySQL.c:1158:20: warning: variable 'val' set but not used [-Wunused-but-set-variable]
RS-MySQL.c: In function 'RS_MySQL_dbApply':
RS-MySQL.c:1219:38: warning: variable 'fld_nullOk' set but not used [-Wunused-but-set-variable]
gcc -m32 -shared -s -static-libgcc -o RMySQL.dll tmp.def RS-DBI.o RS-MySQL.o C:\Program Files\MySQL\MySQL Server 5.6/lib/opt/libmysql.lib -Ld:/RCompile/CRANpkg/extralibs64/local/lib/i386 -Ld:/RCompile/CRANpkg/extralibs64/local/lib -LC:/PROGRA~1/R/R-30~1.3/bin/i386 -lR
installing to C:/Users/MKSEO/Documents/R/win-library/3.0/RMySQL/libs/i386
** R
** inst
** preparing package for lazy loading
Creating a generic function for 'format' from package 'base' in package 'RMySQL'
Creating a generic function for 'print' from package 'base' in package 'RMySQL'
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
MYSQL_HOME defined as C:\Program Files\MySQL\MySQL Server 5.6
* DONE (RMySQL)

The downloaded source packages are in
        'C:\Users\MKSEO\AppData\Local\Temp\RtmpEzoyHK\downloaded_packages'

혹시 컴파일이 잘 되지 않는다면 위 내용과 자신의 컴파일 결과를 비교해 어떤 부분이 잘못되어 있는지 확인해보기 바란다.

컴파일이 끝나면 library( ) 함수로 RMySQL을 잘 불러오는지 테스트해본다.

> library(RMySQL)
Loading required package: DBI
MYSQL_HOME defined as C:\Program Files\MySQL\MySQL Server 5.6
>

9 시스템에 따라 혹시라도 lib 파일을 찾는 위치가 다르다면 컴파일 시 에러가 발생할 것이다. 어디서 lib을 찾고 있는지를 확인하고 해당 위치에 파일을 복사하기 바란다. lib를 참조하는 명령을 볼드로 표시했다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.