rednaxela 发表于 2007-10-29 15:49:08

[求助]请教熟悉MinGW的人,关于termios/termcap

根据查到的资料,MinGW/MSYS本身应该是不支持需要termios.h的程序的编译(虽然MSYS本身也使用了termcap)。对termios.h的支持貌似只有msysDVLPR里才有,而msysDTK里也没。那么假如我需要安装msysDVLPR,应该如何做才能保证配置的正确?我觉得十分奇怪,在普通的MinGW/MSYS里编译GNU Readline/History时,至少./configure还能成功(但会抱怨缺少termios.h和termcap);换到msysDVLPR里干脆说无法识别build系统而拒绝make,超郁闷。

扩充来问,MSYS的那些辅助库(MSYS: Supplementary Tools),例如说libiconv, GMP, zlib等,应该如何安装才算正确?
那些包里多数都是包含一个usr目录,里面是各自的内容(include/lib等)。但MSYS的/usr不是一个符号链接么?假如我的MSYS装在C:\msys\1.0\下,那么/usr指向的实际地址也就是c:/msys/1.0/。应该把那些辅助包解到什么地方才对?

以前用MinGW很少用到本身没有的东西,Boost也顺利装上了……但是GNU的那套toolchain真是难对付。请求高手帮忙啊……

P.S. 米粒一定知道我为什么问这个……挺郁闷的,虽然现在决定不用那些RP的依赖,但这个问题还是得弄清楚才好。
P.S.S 我是希望得到在MinGW下的解决方案。如果要推荐Cygwin的话不用了,那个我也有装,一切正常。

Zelsazgh 发表于 2007-10-29 17:56:37

libiconv...zlib之类的
在MINGW上一般推荐是用GNUWIN32下面的有个专门的包...
下载后直接解压到GCC的文件夹
GMP的话...你可以自行编译后,安装在GCC的文件夹里就成了....
在MINGW下要注意以下几点....不要使用WIN风格的绝对路径...尽可能的使用UNIX风格的相对路径...
编译时设定一下环境变量PATH...
解压时...建议不要使用WINRAR以上

rednaxela 发表于 2007-10-29 18:49:56

GnuWin32的包我也有下载。不过那些包似乎都依赖于其中的LibC?反正我尝试过编译其中的一些,发觉一直得到底下把LibC也编译出来,觉得太烦就没弄。
请问这里指的gcc的文件夹具体是指什么呢?
我的MinGW装在c:/mingw,MSYS装在c:/msys/1.0。是直接解到MinGW所在的目录就可以了么?
但是就以termcap为例,termcap-1.3.1-bin.zip里,有bin、contrib、etc、manifest这四个目录。其中bin里的是一个dll。整个binary distribution里都没有include header,这样也没办法在自己的程序里使用termcap啊……

继续求教 <(_ _)>

Zelsazgh 发表于 2007-10-29 20:59:31

GNUWIN32没有说过具体要依赖哪些库文件...如果你仔细看过它的下载包的话...后面都会跟有dep...bin...lib...doc...之类的...分别指带了访包的运行程序的依赖包...执行文件..库....文档等等...所以LIBC的情况...我还没遇到过
另外GCC的文件夹是指你的预编译环境也就是你放置头文件...GCC编译器...binutil的地方...部份可能在MSYS里已经有了...这无所谓
也就是一般你所指的MINGW文件夹....(长期在使用自己编译的GCC...忘了)
还有关于你的Termcap如果你仔细看过说明的话...
http://gnuwin32.sourceforge.net/packages/termcap.htm
上面已经说明了...Termcap只是一个库文件而以...因此是不会存在运行程序的...DLL是为了当你使用该库后的调用做准备的....
你要找的HEADER中应当在http://gnuwin32.sourceforge.net/downlinks/termcap-lib-zip.php中找得到...以上

rednaxela 发表于 2007-10-29 21:28:08

是的,我仔细看过说明。
因此是不会存在运行程序的
我应该没有提到过“运行程序”,而是说
没办法在自己的程序里使用termcap
嗯我需要的只是*.o/*.a/*.lib和对应的header而已。待会儿去check out一下上面的termcap-lib看看。多谢啊~~

那么进一步回到开头的问题:我是在编译GNU Readline/History的时候失败了。谢天谢地,GnuWin32有编译好的binary。如果能正确使用它那我就不头疼了……等周末有空了再试试 XD

Zelsazgh 发表于 2007-10-29 21:58:20

测试了一上TERMCAP...失败....应该是缺了什么库文件之类的...话说用CYGWIN 从TOolchain开始....应当怎么弄...找不到具体的做法啊...

john_he 发表于 2007-10-29 22:43:26

MinGW是没有Cygwin那么成熟的,不时出点RP错误也正常。通常偶编译安装MinGW的包时都强制指定prefix,configure的时候强制指定CPPFLAGS和LDFLAGS环境变量,加上include和lib路径,一般都能成功。经过测试,如果不指定prefix和环境变量,GCC就会在(MinGW)/include、(MinGW)/lib或(MinGW)/i686-pc-mingw32/include、(MinGW)/i686-pc-mingw32/lib找header和lib,而包一般都不会安装在这里的。

另外MinGW和MSYS的安装路径建议是MinGW安装在MSYS的子目录下,例如C:\\MSYS\\MinGW,因为MSYS的FileSystem的根目录是MSYS的安装目录,这样MinGW编译环境就是在/MinGW,这样比较符合Unix风格,而且MinGW的编译器和MSYS的系统工具互相调用也方便。

另外Cygwin其实也是一种解决方案,但不是说编译成Cygwin的二进制文件,只是用它的Shell。Cygwin下可以安装MinGW的编译器,而且安装Cygwin的时候默认就安装了。调用cygwin-gcc的时候只要指定-mno-cygwin(可以在configure时指定CC=gcc -mno-cygwin),系统就会使用同cygwin-gcc同版本的MinGW的toolchain编译,在Cygwin的shell下成功的机会比MSYS要大,就是编译的时候慢一点罢了。另外也可以直接把MinGW native的GCC安装到cygwin下,并把路径加到PATH里,然后configure的时候指定--host=i686-pc-mingw32进行交叉编译,因为Cygwin也可以运行native Windows程序,这样就不需要有同版本的cygwin-gcc。

偶一般编译GCC的时候用Cygwin,其他时候用MSYS,基本没有什么问题。

rednaxela 发表于 2007-10-30 12:12:39

MSYS里在fstab加上c:/mingw /mingw也一样.默认情况下先装MinGW后装MSYS的话会自动设置成这样吧
但是MSYS的/usr到底是在哪里定义的? 明明只是个符号链接,应该在什么配置文件里能改变才对(吧?)
我在MinGW下编译倒是每次都有指定--prefix=/mingw,不过CFLAGS/CPPFLAGS/LDFLAGS没有每次都设置.或许这里是有点问题.自我检讨一下...

多谢大家的指点啊~~在Windows上用GNU工具还就是不太习惯,诶...

john_he 发表于 2007-10-30 17:10:14

MSYS的/usr好象是强制定义的(就像/c之类的),指向MSYS的根目录,就是/,我想MinGW的开发者们也是有特殊原因才这么设置的吧。另外我安装包都装在/usr/local,没有什么问题,不装在/MinGW是为了可以迅速保存和转移已安装的包,就算崩溃了也最多重新装MSYS和MinGW。

MinGW的文档好象有说怎么改变默认装载点,但我试过都不成功,所以就干脆迁就它把MSYS和MinGW装在一起了。个人还是建议重新装一下MinGW和MSYS,装在一起。至于分开为什么不好我也说不清,只是在一起感觉问题少了很多,RPWT?

MinGW和MSYS的组件可以用SourceForge里的preview版更新一下,虽说是preview但工作还挺稳定的,用安装程序装的版本都比较旧,有时会出点问题,特别是bash建议更新。

Zelsazgh 发表于 2007-10-30 17:56:47

etc/fstab是修改映射点的.....以下....一直想试试1.0.11版...嗯今晚试试
页: [1] 2
查看完整版本: [求助]请教熟悉MinGW的人,关于termios/termcap