พยายามรวบรวม powertop สำหรับ arm โดยใช้ cross compile ใน Ubuntu ที่มีปัญหา malloc


0

ฉันพยายามรวบรวม powertop สำหรับอุปกรณ์แขน ผมเห็น Powertop armv7lพูดคุยเกี่ยวกับที่นี่ไม่น้อยและฉันใช้อูบุนตูจะข้ามรวบรวมสำหรับ

การกำหนดค่าต้องผ่านการตรวจสอบและสร้าง:

checking for uint32_t... yes
checking for uint64_t... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... no
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/param.h... yes
checking for getpagesize... yes
checking for working mmap... no
checking for stdlib.h... (cached) yes
checking for GNU libc compatible realloc... no
checking for working strtod... no
checking for pow... yes

มันได้รับการ devlist.cpp และตายเพราะ malloc ไม่ได้อยู่ที่นั่น

...
CXX      cpu/powertop-intel_cpus.o
CXX      powertop-devlist.o
devlist.cpp: In function ‘void collect_open_devices()’:
devlist.cpp:147: error: ‘rpl_malloc’ was not declared in this scope
devlist.cpp: In function ‘void register_devpower(const char*, double, device*)’:
devlist.cpp:249: error: ‘rpl_malloc’ was not declared in this scope
make[3]: *** [powertop-devlist.o] Error 1
make[3]: Leaving directory `/home/lucid/powertop-2.4/src'
make[2]: *** [all] Error 2
...

ถ้าฉันทำให้ข้าม devlist.cpp ฉันจะได้รับฟังก์ชั่นหน่วยความจำอื่น ๆ เช่นเดียวกับข้างบน

ฉันเดาว่าคำถามของฉันคือฉันจะเปลี่ยนการกำหนดค่าหรือใช้ malloc ให้ถูกต้องได้อย่างไร? ฉันต้องสร้างห้องสมุดอื่นหรือไม่ Toolchain ของฉันควรมีทุกสิ่งที่ฉันต้องการ

ฉันเรียกการกำหนดค่าและทำให้เป็นเช่นนี้:

./configure --prefix=/home/lucid/timesys/i_MX53start/toolchain --sysconfdir=/home/lucid/timesys/i_MX53start/toolchain/etc --disable-static --target=armv7l-timesys-linux --host=i686 --build=armv7l-timesys-linux && make

คำตอบ:


2

คุณอาจต้องตั้งค่าตัวแปรสภาพแวดล้อมบางอย่างให้เรียกใช้จาก toolchain ของคุณ ตัวอย่างฉันใช้ด้านล่างสำหรับ toolchain ที่ติดตั้งในไดเรกทอรีท้องถิ่นของฉันเช่นคุณ:

MY_ARM_BASE=${HOME}/dev/toolchain/arm-2008q3
C_INCLUDE_PATH=${MY_ARM_BASE}/lib/gcc/arm-none-linux-gnueabi/4.3.2/include:${MY_ARM_BASE}/lib/gcc/arm-none-linux-gnueabi/4.3.2/include-fixed
LIBRARY_PATH=${MY_ARM_BASE}/arm-none-linux-gnueabi/libc/lib:${MY_ARM_BASE}/arm-none-linux-gnueabi/libc/usr/lib
CPLUS_INCLUDE_PATH=${MY_ARM_BASE}/arm-none-linux-gnueabi/include/c++/4.3.2
#OBJC_INCLUDE_PATH
COMPILER_PATH=${MY_ARM_BASE}/bin
#LD_RUN_PATH
#GPROF_PATH
#######
CC=${COMPILER_PATH}/gcc
CXX=${COMPILER_PATH}/g++
RANLIB=${COMPILER_PATH}/ranlib
STRIP=${COMPILER_PATH}/strip
export C_INCLUDE_PATH LIBRARY_PATH CPLUS_INCLUDE_PATH COMPILER_PATH
export CC CXX RANLIB STRIP

ฉันมีสิ่งที่คุณส่วนใหญ่ชี้ไปที่นี่ แต่ฉันอาจพลาดเส้นทางรวมถึงสองสามอย่าง ฉันพยายามแล้ว
CaptainBli

คำตอบของคุณค่อนข้างถูกต้องดังนั้น +1 ฉันหายไปบางประกาศสำหรับรวมถึงที่ฉันพบในภายหลังหลังจากค้นหาลิงค์ต่อไปนี้: configure และ malloc แม้ว่าปัญหาจริงมาจาก configure.ac พวกเขาได้เพิ่มการตรวจสอบหน่วยความจำ 2 ครั้งที่ทำให้ฉันมีปัญหา ถ้าผมปรับเปลี่ยน config.h เพื่อลบ#defines ที่มีการเปลี่ยนแปลงmallocเพื่อrpl_mallocที่จะถูกสร้างขึ้นมันไม่ดูเหมือนจะแก้ไขปัญหาของฉันระบุไว้ข้างต้น rpl_reallocเช่นเดียวกันกับ
CaptainBli
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.