1

後でボードに移植するために、samba 4.0.5 を i686 から MIPS にクロスコンパイルするように割り当てられました。ubuntu 13.04 でコンパイルしています。

私が得るエラーは次のとおりです。

lib/sysquotas_4A.c: In function ‘sys_get_vfs_quota’:
lib/sysquotas_4A.c:107:10: error: ‘struct dqblk’ has no member named ‘dqb_curblocks’
lib/sysquotas_4A.c:124:10: error: ‘struct dqblk’ has no member named ‘dqb_curblocks’
lib/sysquotas_4A.c:170:29: error: ‘struct dqblk’ has no member named ‘dqb_curblocks’
The following command failed:
cc -fno-builtin -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_REENTRANT 
-D_POSIX_PTHREAD_SEMANTICS -I. 
-I/home/constantine/software_forge/2013/5_month/samba/samba-4.0.5/source3 
-I/home/constantine/software_forge/2013/5_month/samba/samba-4.0.5/source3/../lib/popt 
-I/home/constantine/software_forge/2013/5_month/samba/samba-4.0.5/source3/../lib/iniparser/src 
-Iinclude/autoconf -Iautoconf -Iautoconf/source3 -Iinclude -I./include  
-I. -I. -I./../lib/replace -I./../lib/tevent -I../lib/ccan/.. -I./librpc -I./.. 
-I./../lib/tdb_compat -I./../lib/talloc -I../lib/tdb/include -I../lib/ntdb 
-DHAVE_CONFIG_H  -I/~/opt/buildroot-gcc342/include -Iinclude/autoconf -Iautoconf 
-Iautoconf/source3 -Iinclude -I./include -I. -I. -I./../lib/replace -I./../lib/tevent -I../lib/ccan/.. 
-I./librpc -I./.. -I./../lib/tdb_compat -I./../lib/popt -DLDAP_DEPRECATED  
-I/home/constantine/software_forge/2013/5_month/samba/samba-4.0.5/source3/lib -I.. 
-I./../lib/ldb/include -D_SAMBA_BUILD_=3 -D_SAMBA_BUILD_=3 -fPIE -c lib/sysquotas_4A.c -o lib/sysquotas_4A.o

走る

./configure --target=mips-linux-uclibc --host=i686

その前に、これらを実行します。

export LD_LIBARY_PATH=~/opt/buildroot-gcc342/lib
export LDFLAGS=-L/~/opt/buildroot-gcc342/lib
export CPPFLAGS=-I/~/opt/buildroot-gcc342/include
export CC=~/opt/buildroot-gcc342/bin/mipsel-linux-uclib-gcc

また、クォータ パッケージをインストールし、-w フラグを削除しました (OS/X の友人が提案したように) が、それでも同じです。ネイティブ アーキテクチャ用にコンパイルします。また、ソースを調べたところ、これらを見ました

#if _LINUX_QUOTA_VERSION < 2
struct dqblk{
   ...
   u_int32_t dqb_curblocks;
   ...
}
#else
#define QIF_BLIMITS     1
#define QIF_SPACE       2
...
struct dqblk{
   ...
}
#endif

インクルードを確認したところ、動作するはずです。私はLinuxとクロスコンパイルが初めてなので、この質問がばかげている場合は申し訳ありません。しかし、どういうわけか、Google の検索結果は今のところ役に立ちません。

4

1 に答える 1