我在x86架構上使用OpenIMSCore。我需要爲Power-pc交叉編譯OpenIMS。在/ser_ims/Makefile.defs文件中有ppc選項。但我無法弄清楚如何爲ppc進行交叉編譯。沒有配置文件可以通過它配置IMS併爲ppc進行編譯。有沒有人交叉編譯IMS?我試圖通過命令編譯
IP多媒體子系統交叉編譯
- 讓CFLAGS = 「ARCH =電源Macintosh」
- 讓CFLAGS = 「拱=競價排名」
但兩者的命令不工作。它給以下錯誤:
Makefile.defs:598: You are using an old and unsupported gcc version (G++), compile at your own risk! powerpc-linux-gnu-gcc -g -O9 -funroll-loops -Wcast-align -Wall -DNAME='"ser"' -DVERSION='"2.1.0-dev1 OpenIMSCore"' -DARCH='"i386"' -DOS='linux_' -DOS_QUOTED='"linux"' -DCOMPILER='"powerpc-linux-gnu-gcc G++"' -D__CPU_i386 -D__OS_linux -DSER_VER=2001000 -DCFG_DIR='"/usr/local/etc/ser/"' -DPKG_MALLOC -DSHM_MEM -DSHM_MMAP -DDNS_IP_HACK -DUSE_IPV6 -DUSE_MCAST -DUSE_TCP -DDISABLE_NAGLE -DHAVE_RESOLV_RES -DDBG_QM_MALLOC -DUSE_DNS_CACHE -DUSE_DNS_FAILOVER -DUSE_DST_BLACKLIST -ggdb -DUSE_TLS -DTLS_HOOKS -DFAST_LOCK -DADAPTIVE_WAIT -DADAPTIVE_WAIT_LOOPS=1024 -DCC_GCC_LIKE_ASM -DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD -DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H -DHAVE_TIMEGM -DHAVE_EPOLL -DHAVE_SIGIO_RT -DSIGINFO64_WORKARROUND -DHAVE_SELECT -c core_cmd.c -o core_cmd.o
core_cmd.c: In function 'core_shmmem': mem/../fastlock.h:181: error: can't find a register in class 'MQ_REGS' while reloading 'asm' mem/../fastlock.h:358: error: can't find a register in class 'MQ_REGS' while reloading 'asm' mem/../fastlock.h:181: error: can't find a register in class 'MQ_REGS' while reloading 'asm' mem/../fastlock.h:181: error: 'asm' operand has impossible constraints
現在我可以交叉編譯IMS了。交叉命令後,我得到了爲電腦pc生成的對象文件。但是現在我面臨的問題是,在OpenIMS中沒有一個Makefile。我已經通過主要的Makefile進行交叉編譯,這會影響IMS中的所有其他makefile。但它並沒有這樣做。 – pragya
是的,在生成目標文件時不會出現任何錯誤,但是在交叉編譯過程的鏈接階段,它會給出與架構問題相關的錯誤。這就是它會報告'在課堂上找不到寄存器'。我希望在makefile的某個地方,你需要明確指定不同的共享庫路徑,以便在LDFLAG中指定。 – pRAShANT