Table of Contents |
$ uname -a CYGWIN_NT-6.3 home-PC 1.7.29(0.272/5/3) 2014-04-07 13:46 x86_64 Cygwin
tar xvzf supplibs-2.2.1.tar.gz cd supplibs-2.2.1/src
for F in `find . -name config.guess`;do \cp -pf ../../config.guess $F;done for F in `find . -name config.sub`;do \cp -pf ../../config.sub $F;done
CVS := cvs -d $(shell cat CVS/Root)の行をコメントアウト
MAKE="make -j8" make -j8 install後ろの-j8は要らないかもしれない。フツーにmake実行するなら make install だけで良い。
-------+---------+-------------- Config | Install | Package -------+---------+-------------- ok | ok | pkg-config ok | -- | udunits ok | -- | zlib ok | ok | szlib ok | ok | libpng ok | ok | jpeg ok | ok | jasper ok | ok | tiff ok | ok | geotiff -- | -- | hdf4 ok | ok | grib2c ok | ok | xml2 ok | ok | curl ok | -- | dap -- | -- | gadap ok | -- | hdf5 ok | -- | netcdf ok | ok | ncurses ok | ok | readline ok | -- | libsx ok | ok | freetype ok | ok | fontconfig ok | ok | pixman ok | ok | cairo ok | ok | shp ok | ok | gd -------+---------+--------------
$ make install -------+---------+-------------- Config | Install | Package -------+---------+-------------- ok | ok | pkg-config ok | ok | udunits ok | -- | zlib ok | ok | szlib ok | ok | libpng ok | ok | jpeg ok | ok | jasper ok | ok | tiff ok | ok | geotiff -- | -- | hdf4 ok | ok | grib2c ok | ok | xml2 ok | ok | curl ok | -- | dap -- | -- | gadap ok | -- | hdf5 ok | -- | netcdf ok | ok | ncurses ok | ok | readline ok | ok | libsx ok | ok | freetype ok | ok | fontconfig ok | ok | pixman ok | ok | cairo ok | ok | shp ok | ok | gd -------+---------+--------------
make install ALLDIRS=zlib
configure: creating ./config.lt config.lt: creating libtool *** unknown host x86_64-unknown-cygwin!
x86_64-unknown-cygwin) BAR="linux" ;;を追加。
cat > config/x86_64-unknown-cygwin << EOF CC=gcc CC_BASENAME=gcc DEBUG_CFLAGS="-g -fverbose-asm" DEBUG_CPPFLAGS= PROD_CFLAGS="-O3 -fomit-frame-pointer" PROD_CPPFLAGS= PROFILE_CFLAGS="-pg" PROFILE_CPPFLAGS= EOF
In file included from hdf.h:20:0, from atom.c:64: hdfi.h:1442:1: error: unknown type name ‘No’ No machine type has been defined. Your Makefile needs to have someing likehdf/src/hdfi.h で、GOT_MACHINE が定義されずにエラーとなる。
#define __linux__を hdf/src/hdfi.h に追加。makeも問題なく実行できた(かなり怪しいが)。
h5ls.c: In function ‘get_width’: h5ls.c:2153:9: error: unknown type name ‘CONSOLE_SCREEN_BUFFER_INFO’ CONSOLE_SCREEN_BUFFER_INFO scr; ^ h5ls.c:2154:49: error: ‘STD_OUTPUT_HANDLE’ undeclared (first use in this function) GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &scr);/usr/include/w32api/windows.h で定義されているようなので、 h5ls.c に #include <windows.h> を追記。
make install ALLDIRS=hdf5
make install ALLDIRS=netcdf In file included from dapparselex.h:11:0, from dap.y:11: daptab.h:93:15: error: unknown type name 'DAPparsestate'daptab.hでDAPparsestateを使っていて、dapparselex.hで定義されている。
が、dapparselex.hでdaptab.hがincludeされている?int dapparse (DAPparsestate* parsestate);を
struct DAPparsestate; int dapparse (struct DAPparsestate* parsestate);に変える。
Makefile:431: recipe for target 'netcdf-f90.info' failed make: *** [netcdf-f90.info] Error 1だが、configure時に--disable-f90のため、要らないはず。(manだからそもそも無くて良いはずだけど)
netcdf-f90.texi:2085: warning: @item missing argument netcdf-f90.texi:6982: raising the section level of @unnumberedsubsec which is too low Makefile:431: recipe for target 'netcdf-f90.info' failed make: *** [netcdf-f90.info] Error 1netcdf-f90.info の @unnumberedsubsec を @unnumberedsec に書き換える(3箇所)
SUPPLIBS=どこぞのsupplibs-2.2.1/x86_64-unknown-cygwin export PKG_CONFIG=${SUPPLIBS}/bin/pkg-config export PKG_CONFIG_PATH=${SUPPLIBS}/lib/pkgconfig
configure:2047: checking build system type configure:2056: error: cannot guess build type; you must specify one./configure に --build=x86_64-unknown-cygwin 追加。
make DDXParser.cc: In function ‘Type get_type(const char*)’: DDXParser.cc:133:28: error: ‘strcmp’ was not declared in this scopegoogle先生によると、gcc 4.2以前とgcc 4.3のバージョンの違いに問題があるらしい。
Vector.cc: In member function ‘virtual unsigned int Vector::val2buf(void*, bool)’: Vector.cc:677:40: error: ‘memcpy’ was not declared in this scopeVector.cc にも #include <string.h>を追加
SignalHandler.cc: In static member function ‘static void SignalHandler::initialize_instance()’: SignalHandler.cc:64:42: error: ‘atexit’ was not declared in this scopeSignalHandler.cc には #include <stdlib.h>を追加
Error.cc: In copy constructor ‘Error::Error(const Error&)’: Error.cc:111:54: error: ‘strlen’ was not declared in this scopeError.cc にも #include <string.h>を追加
util.cc: In function ‘char* get_tempfile_template(char*)’: util.cc:588:11: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]util.cc にも #include <string.h>を追加
parser-util.cc: In function ‘void save_str(char*, const char*, int)’: parser-util.cc:135:19: error: ‘strlen’ was not declared in this scopeparser-util.cc にも #include <string.h>を追加
dds.y: In function ‘int ddsparse(void*)’: dds.y:196:57: error: ‘strcpy’ was not declared in this scopedds.y にも #include <string.h>を追加
GeoConstraint.cc: In function ‘bool unit_or_name_match(std::set<std::basic_string<char> >, std::set<std::basic_string<char> >, const string&, const string&)’: GeoConstraint.cc:110:43: error: ‘find_if’ was not declared in this scopeGeoConstraint.cc には #include <algorithm>を追加。
RCReader.cc: In member function ‘bool RCReader::read_rc_file(const string&)’: RCReader.cc:156:40: error: ‘strchr’ was not declared in this scopeRCReader.cc に #include <string.h>を追加
Connect.cc: In member function ‘void Connect::parse_mime(Response*)’: Connect.cc:181:27: error: ‘strlen’ was not declared in this scopeConnect.cc に #include <string.h>を追加。
HTTPCache.cc: In member function ‘void HTTPCache::create_location(HTTPCache::CacheEntry*)’: HTTPCache.cc:1470:37: error: ‘strcpy’ was not declared in this scope HTTPCache.cc: In member function ‘void HTTPCache::set_max_size(long unsigned int)’: HTTPCache.cc:1200:42: error: ‘ULONG_MAX’ was not declared in this scopeHTTPCache.cc に #include <string.h>と#include <limits.h>を追加。
AISDatabaseParser.cc: In static member function ‘static void AISDatabaseParser::aisStartElement(AISDatabaseParser::AISParserState*, const char*, const char**)’: AISDatabaseParser.cc:104:31: error: ‘strcmp’ was not declared in this scopeAISDatabaseParser.cc に #include <string.h>を追加。
util_mit.cc: In function ‘time_t parse_time(const char*, bool)’: util_mit.cc:137:37: error: ‘strchr’ was not declared in this scopeutil_mit.cc に #include <string.h>を追加。
cgi_util.cc: In function ‘void ErrMsgT(const string&)’: cgi_util.cc:313:49: error: ‘strcpy’ was not declared in this scopecgi_util.cc に #include <string.h>を追加。
HTTPConnect.h:35:24: fatal error: curl/types.h: No such file or directory #include <curl/types.h>-I../../x86_64-unknown-cygwin/include を追加。
getdap.cc: In function ‘int main(int, char**)’: getdap.cc:264:44: error: ‘strcmp’ was not declared in this scopegetdap.cc に #include <string.h>を追加。
TestArray.cc: In member function ‘virtual void TestArray::constrained_matrix(const string&, char*)’: TestArray.cc:163:66: error: ‘memcpy’ was not declared in this scopeTestArray.cc に #include <string.h>を追加。
make install
make install ALLDIRS=gadap
- configure は、dap がインストールできているので通る。
gaReports.cc: In member function ‘int gaReports::getVarDbl(int, int, int, int, double*) ’: gaReports.cc:167:11: error: ‘free’ was not declared in this scope#include <stdlib.h> 追加。
http://iges.org/grads/downloads.html から
ソース
ftp://cola.gmu.edu/grads/2.1/grads-2.1.a1-src.tar.gz
をダウンロード。
tar xvzf grads-2.1.a1-src.tar.gz cd grads-2.1.a1
cp configure configure_org sed 's/png15/png12/g' configure_org > configure chmod +x configure
SUPPLIBS=どこぞのsupplibs-2.2.1/x86_64-unknown-cygwin \ ./configure --disable-dyn-supplibs --prefix=インストールしたい場所 conftest.c:71:22: fatal error: ft2build.h: No such file or directorycairoのチェック中にエラーが出る。ft2build.hはfreetype2のヘッダファイルで
${SUPPLIBS}/include/ft2build.h にあるが、-I${SUPPLIBS}/include/freetype2 などしかチェックしていない。
${SUPPLIBS}/include/ft2build.h から ${SUPPLIBS}/include/freetype2/ にコピー。
SUPPLIBS=どこぞのsupplibs-2.2.1/x86_64-unknown-cygwin \ ./configure --disable-dyn-supplibs --prefix=インストールしたい場所 make g++: error: supplibs-2.2.1/x86_64-unknown-cygwin/lib/libnetcdf.a: No such file or directory g++: error: supplibs-2.2.1/x86_64-unknown-cygwin/lib/libXrender.a: No such file or directorylibXrenderはSUPPLIBSに無いのにSUPPLIBSを見に行っている。-lXrender に変更。 libnetcdf.aはlibnetcdf.libとしてインストールされている。libnetcdf.libに変更。
libsx.a(libsx.o): In function `ShowDisplay': supplibs-2.2.1/src/libsx/src/libsx.c:414: undefined reference to `XInternAtom'libsx.a には -lX11が必要。gui_libsに追加。
libxml2.a(encoding.o):encoding.c:(.text+0x2fac): undefined reference to `libiconv_open'libxml2.a に libiconvが必要なので、cairo_libsとdap_libsに-liconv追加
libcairo.a(cairo-xlib-surface.o):cairo-xlib-surface.c:(.text+0x16f): undefined reference to `XCreatePixmap' /usr/bin/ld: supplibs-2.2.1/x86_64-unknown-cygwin/lib/libcairo.a(cairo-win32-font.o): bad reloc address 0x0 in section `.pdata'cairo_libs に -lX11 -lgdi32 -lmsimg32 追加。
grib2scan.c:300: undefined reference to `gagby'
gcc -g -O2 grib2scan.c -o grib2scanが実行されているが、gagbyはgamach.oで定義されている。他も追加して、手動コンパイル。
gcc -g -O2 grib2scan.c gamach.o gautil.o galloc.o gatxt.o -lreadline -o grib2scan
make install
このあと、/usr/local/lib/grads にフォントデータなどを用意する。ftp://cola.gmu.edu/grads/data2.tar.gz からダウンロード。
掲示板に要望があれば、バイナリをアップするかも? 他人の作ったバイナリでも気にせず実行できるなら...
と思ったけど、無料サイトなので1ファイル3MBまでしかアップできない orz 分割してもいいけど。