下記urlのソースをgcc 4.6.1でコンパイルしたバイナリをレンタルサーバ(tok2)で動かそうとしています。このサーバはバイナリcgiをサポートしています。
http://d.hatena.ne.jp/neuromancer_sho/20111024/1319447432
g++のオプションで -static を指定しているので、サーバ側に手元のマシン上のライブラリが無くても動作するだろう、と予測したのですが、Internal Server Errorになってしまいます。エラーログなどはサーバ仕様上見れません。手元のlinuxマシンではapache上でcgiとして動作しています。
特殊なライブラリを使用しない、c++0xの新命令も使用しないcgi
cout<<"Content-Type: text/html\n\n"<<endl; など
であれば、正常に動きます。
サーバ側にライブラリ(soファイル??)が無いとダメなのでしょうか?
レンタルサーバのスペック:
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
Linux 17.pro.tok2.com 2.6.18-164.11.1.el5xen #1 SMP Wed Jan 20 08:53:10 EST 2010 i686 i686 i386 GNU/Linux
手元のマシンのスペック:
gcc (GCC) 4.6.1 20110819 (prerelease)
Linux arch 2.6.33.7-co-0.7.9 #1 PREEMPT Sat Apr 9 20:30:51 UTC 2011 i686 Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz GenuineIntel GNU/Linux
# ただの思いつきです
while(dent = readdir(dir)) ret.push_back(dent->d_name);
のくだりで、dent->d_name って複製しなくて大丈夫でしょうか?
下のようにしたくなっちゃいますが...
while(dent = readdir(dir)) { string s(dent->d_name); ret.push_back(s); }
暗黙の型変換で実質は同じ扱いになる気がするのでこれは問題ない気がします。
2011/10/25 12:57:51目がザルでした...
2011/10/25 13:08:20