このアクティビティを説明する多くのウォークスルーとチュートリアルがそこにありますが、それらの多くを読んだ後でも、これを機能させることはできません。私が取った手順(以下に投稿)を忍耐強く忍耐強く持ち、私が道を外れた可能性がある場所を提案した場合、私は非常に感謝します。私は約1日半かけてメイクファイルを見つめ、ウォークスルーを読んでいるので、文字通りの提案は役に立ちます。
環境:
ごと ビルド環境の初期化 :
Java:
$ Sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper main multiverse"
$ Sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates main multiverse"
$ Sudo apt-get update
$ Sudo apt-get install Sun-Java5-jdk
その他必要:
$ Sudo apt-get install git-core gnupg flex bison gperf build-essential Zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev libx11-dev libreadline5-dev libz-dev libgl1-mesa-dev
$ Sudo apt-get install gcc-multilib g++-multilib libc6-i386 libc6-dev-i386
Then from Downloading the Source Tree :
レポ:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
$ repo init -u https://Android.googlesource.com/platform/manifest -b Eclair
$ repo sync
$ gpg --import (imported the huge key)
And Building the System :から
初期化:
$ source build/envsetup.sh
ターゲットを選択してください:
$ lunch generic-user
コードを作成します:
$ make -j4
追加!make -j4
:の出力
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.1-update1
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_Arch=arm
Host_Arch=x86
Host_OS=linux
Host_BUILD_TYPE=release
BUILD_ID=Eclair
============================================
build/core/copy_headers.mk:15: warning: overriding commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'
build/core/copy_headers.mk:15: warning: ignoring old commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'
/bin/bash: line 0: cd: sdk/layoutopt/app/src/resources: No such file or directory
Install: out/Host/linux-x86/bin/acp
target Generated: libclearsilver-jni <= out/Host/common/obj/Java_LIBRARIES/clearsilver_intermediates/javalib.jar
target Generated: libclearsilver-jni <= out/Host/common/obj/Java_LIBRARIES/clearsilver_intermediates/javalib.jar
Host SharedLib: libneo_cs (out/Host/linux-x86/obj/lib/libneo_cs.so)
Host C++: aapt <= frameworks/base/tools/aapt/AaptAssets.cpp
Host C++: aapt <= frameworks/base/tools/aapt/Command.cpp
error: error reading out/Host/common/obj/Java_LIBRARIES/clearsilver_intermediates/javalib.jar; error in opening Zip file
error: error reading out/Host/common/obj/Java_LIBRARIES/clearsilver_intermediates/javalib.jar; error in opening Zip file
error: error reading out/Host/common/obj/Java_LIBRARIES/clearsilver_intermediates/javalib.jar; cannot read Zip file
error: cannot access org.clearsilver.HDF
class file for org.clearsilver.HDF not found
javadoc: error - Class org.clearsilver.HDF not found.
Error: No classes were specified on the command line. Try -help.
make: *** [out/Host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/org_clearsilver_HDF.h] Error 15
make: *** Waiting for unfinished jobs....
error: error reading out/Host/common/obj/Java_LIBRARIES/clearsilver_intermediates/javalib.jar; cannot read Zip file
error: cannot access org.clearsilver.CS
class file for org.clearsilver.CS not found
In file included from frameworks/base/tools/aapt/AaptAssets.h:18,
from frameworks/base/tools/aapt/AaptAssets.cpp:5:
frameworks/base/tools/aapt/ZipFile.h:65: warning: ‘typedef’ was ignored in this declaration
javadoc: error - Class org.clearsilver.CS not found.
Error: No classes were specified on the command line. Try -help.
In file included from frameworks/base/tools/aapt/AaptAssets.h:18,
from frameworks/base/tools/aapt/Main.h:14,
from frameworks/base/tools/aapt/Command.cpp:6:
frameworks/base/tools/aapt/ZipFile.h:65: warning: ‘typedef’ was ignored in this declaration
make: *** [out/Host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/org_clearsilver_CS.h] Error 15
追加!
だから私はここでいくつかの問題を抱えていることがわかりました。これらの問題を克服したら、カーネルモジュールをコンパイルできる環境ができると思います。私が間違っている場合は私を修正してください。
次に、module.cファイルとmakefileを含むディレクトリに移動します。以下のメイクファイルの内容:
obj-m += mymodule.o
CROSS_COMPILE=~/WORKING_DIRECTORY/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
KERNEL_DIR ?= /home/<myuser>/WORKING_DIRECTORY
VERSION = v1.1
all:
make -C $(KERNEL_DIR) M=$(PWD) Arch=arm CROSS_COMPILE=$(CROSS_COMPILE) modules
rm -rf *.c~
rm -rf *.mod*
rm -rf *.o
clean:
make -C $(KERNEL_DIR) M=$(PWD) clean
私はmakeとmakefileの経験がほとんどありませんが、これは私には合理的に見えました。このファイルに関する私の主な懸念は、KERNEL-DIR
変数です。その変数にいくつかの異なる値を試してみましたが、現在の値ではないのにあらゆる種類のエラーが発生しました。もちろん、それでもまだ間違っている可能性があるため、ここでのコメントは歓迎します。
だから、私が知る限り、引数なしでmakeを実行でき、何をする必要があるかを理解することができます。私はmakeとmake -fをSudoの有無にかかわらず試しました。 4つの順列はすべて同じ結果になります。
make -C /home/<myuser>/WORKING_DIRECTORY M=/home/<myuser>/Desktop/<MyModuleDir> Arch=arm CROSS_COMPILE=~/WORKING_DIRECTORY/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi- modules
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.1-update1
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_Arch=arm
Host_Arch=x86
Host_OS=linux
Host_BUILD_TYPE=release
BUILD_ID=Eclair
============================================
make[1]: Entering directory `/home/<myuser>/WORKING_DIRECTORY'
build/core/copy_headers.mk:15: warning: overriding commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'
build/core/copy_headers.mk:15: warning: ignoring old commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'
/bin/bash: line 0: cd: sdk/layoutopt/app/src/resources: No such file or directory
Available sub-modules:
01-test dumpsys libminui LotsOfApps
20-dns.conf dvz libminzip lowstoragetest
95-configured dx libmp4recognizer_utility lsd
aapt dx-tests libmtdutils LunarLander
acc edify libnativehelper LunarLanderTests
AccountAndSyncSettings Email libneo_cgi MagicSmokeWallpapers
accRuntimeTest EmailTests libneo_cs make_cfst
acp emma libneo_util makedict
adb emmalib libnetutils make_g2g
adbd emulator libocr makekeycodes
add-property-tag emulator-arm libomx_aac_component_lib make_ve_grammar
afar emulator-hw libomx_aacdec_sharedlibrary mediaframeworktest
aidl emulator-tcg libomx_amr_component_lib MediaProvider
AlarmClock EnabledTestApp libomx_amrdec_sharedlibrary mediaserver
AliasActivity etc1tool libomx_amrenc_component_lib memtest
am eventanalyzer libomx_amrenc_sharedlibrary minigzip
Android event-log-tags libomx_avc_component_lib mkbootfs
Android.core.tests.annotation exc_dump libomx_avcdec_sharedlibrary mkbootimg
Android.core.tests.archive ext libomx_baseclass_lib mksdcard
Android.core.tests.concurrent Fallback libomx_common_lib mkstubs
Android.core.tests.crypto fastboot libomx_m4v_component_lib mkyaffs2image
Android.core.tests.dom FixedGridLayout libomx_m4vdec_sharedlibrary Mms
Android.core.tests.logging flash_image libomx_mastercore_lib MmsTests
Android.core.tests.luni.io FontLab libomx_mp3_component_lib monkey
Android.core.tests.luni.lang framework libomx_mp3dec_sharedlibrary monkeyrunner
Android.core.tests.luni.net FrameworkPermissionTests libomx_queue_lib mtpd
Android.core.tests.luni.util framework-res libomx_sharedlibrary MultiResolution
Android.core.tests.math FrameworkTest libop Music
Android.core.tests.nio framework-tests libopencore_author MusicTests
Android.core.tests.nio_char FrameworkTestTests libopencore_common nc
Android.core.tests.prefs fsck_msdos libopencore_download netcfg
Android.core.tests.regex fs_config libopencore_downloadreg netperf
Android.core.tests.runner fs_get_stats libopencore_mp4local netserver
Android.core.tests.security Gallery libopencore_mp4localreg ninepatch
Android.core.tests.sql Gallery3D libopencore_net_support NinePatchLab
Android.core.tests.text GalleryTests libopencore_player NoShareUidApp
Android.core.tests.xml gdbserver libopencore_rtsp NotePad
Android.core.tests.xnet genext2fs libopencore_rtspreg NotePadTests
Android.cts.dpi GestureBuilder libosclbase opcontrol
Android.cts.refapp GL2JNI libosclerror openssl
Android.policy GLJNI libosclio OpenWnn
Android.policy_mid GlobalSearch liboscllib oprofiled
Android.policy_phone GlobalSearchBenchmarks libosclmemory org.Eclipse.core.commands_3.4.0.I20080509-2000
androidprefs GlobalSearchPermissionTests libosclproc org.Eclipse.equinox.common_3.4.0.v20080421-2006
Android.test.runner GlobalSearchTests libosclregcli org.Eclipse.jface_3.4.2.M20090107-0800
AndroidTests GlobalTime libosclregserv org-netbeans-api-visual
angeles GoogleContactsProvider libosclutil org-openide-util
ant GoogleContactsProviderTests libpagemap osgi
antlr-2.7.7 google-framework libpassthru_oma1 PackageInstaller
anttasks googlelogin-client libpcap parseStringTest
apicheck GoogleSearch libpixelflinger perm_checker
ApiDemos gpustate libpixelflinger_armv6 perm_checker.conf
ApiDemosReferenceTest gralloc.default libpixelflinger_static Phone
ApiDemosTests groovy-all-1.6.5 libplatform_library_jni PicoTts
apkbuilder grxmlcompile libpng ping
ApplicationsProvider gtest-filepath_test libpopt PinyinIME
applypatch gtest-linked_ptr_test libprotocolenginenode_base PlatformLibraryClient
applypatch_static gtest-message_test libprotocolenginenode_common platform.xml
app_process gtest-options_test libprotocolenginenode_download_common pm
AppWidgetHostTest gtest-port_test libprotocolenginenode_pdl post_trace
AppWidgetProvider gtest_pred_impl_unittest libprotocolenginenode_ps pppd
apriori gtest_prod_test libpv_aac_dec preload
archquery gtest-test-part_test libpvaacffparsernode ProcessTests
asm-3.1 gtest-typed-test2_test libpvaacffrecognizer procmem
atree gtest-typed-test_test libpvaacparser procrank
AudioHardwareRecord gtest_unittest libpvamrffparsernode profile_pid
AudioHardwareRecordLoop gzip libpvamrffrecognizer profile_trace
AudioInRecord HelloActivity libpv_amr_nb_common_lib Provision
backup_helper_test HelloActivityTests libpvamrwbdecoder pvplayer
BackupTest hierarchyviewer libpvauthorengine q2dm
BatteryWaster hist_trace libpv_avc_common_lib q2g
bb2sym Home libpvavcdecoder qemud
bb_dump hosttestlib libpvavifileparser qemu-props
bbprof hprof-conv libpv_config_parser qwerty2.kcm
bison HTMLViewer libpvdecoder_gsmamr qwerty.kcm
Bluetooth icache libpvdownloadinterface racoon
BluetoothChat icudata libpvdownloadmanagernode radiooptions
BluetoothDebug idegen libpvdownloadreginterface read_addr
bmgr ime libpvencoder_gsmamr read_method
bookmarks.xml ImfTest libpvfileoutputnode read_pid
bootanimation ImfTestTests libpvfileparserutils read_trace
Browser imgdiff libpvframemetadatautility recovery
BrowserPowerTests init libpvgendatastruct required_hardware.xml
BrowserTestPlugin input libpvgsmamrparser rgb2565
BrowserTests installd libpv_http_parcom rild
bsdiff invoke_mock_media_player libpvid3parcom rsg-generator
bspatch iptables libpvjitterbuffer RSSReader
btool ip-up-vpn libpvjitterbuffernode run-core-tests
bugreport iself libpvjitterbufferrtp run-core-tests-on-ri
BusinessCard isprelinked libpvlatmpayloadparser safe_iop_test
Calculator jarjar libpvmediadatastruct SampleBrowserPlugin
CalculatorTests jarutils libpvmediainputnode schedtest
Calendar jasmin libpvmedialayernode scp
CalendarProvider jasmin.jar libpvmediaoutputnode screenshot2
CalendarProviderTests javax.obex libpvmf sdklib
CalendarTests jcommon-1.0.12 libpvmfrecognizer sdkmanager
Camera jdiff libpvmimeutils SdkSetup
CameraTests jdwpspy libpvmioaviwavfileinput sdkstats
CertInstaller JETBoy libpvmiofileinput sdkuilib
cfassembler jfreechart-1.0.9 libpvmiofileoutput sdutil
check-lost+found jfreechart-1.0.9-swt libpvmp3 SearchableDictionary
check_prereq junit libpvmp3ff sensors.goldfish
check_stack jython libpvmp3ffparsernode service
check_trace kcm libpvmp3ffrecognizer servicemanager
clearsilver keystore libpvmp4decoder services
cmu2nuance keystore_cli libpvmp4ff Settings
com.Android.inputmethod.pinyin.lib KeyStoreTests libpvmp4ffcomposer SettingsProvider
com.example.Android.platform_library kxml2-2.3.0 libpvmp4ffcomposernode SettingsTests
commons-compress-1.0 latencytop libpvmp4ffparsernode sh
Compass LatinIME libpvmp4ffrecognizer ShareUidApp
ContactManager Launcher libpvmp4interface showlease
Contacts Launcher2 libpvmp4reginterface showmap
ContactsProvider launchperf libpvomxaudiodecnode showslab
ContactsProviderTests layoutlib libpvomxbasedecnode sig
ContactsTests layoutlib_api libpvomxencnode sig-check
core layoutlib_create libpv_omx_interface sig-create
core-tests layoutlib_utils libpvomx_proxy_lib signapk
CoreTests layoutopt libpvomxvideodecnode SignatureTest
coverage libabi libpvplayer_engine SignatureTestTests
cpueater libacc libpvpvxparser signature-tools
cpufeatures libaes libpvrtsp_cli_eng_node SimpleJNI
crasher libandroidpv libpvrtspinterface SkeletonApp
create_test_dmtrace libandroidpvauthor libpv_rtsp_parcom SkeletonAppTests
cts libandroid_runtime libpvrtspreginterface skia_bench
CtsAccessibilityServiceTestCases libandroid_servers libpvsdpparser skia_gm
CtsAccountManagerTestCases libapplypatch libpvsocketnode SlowSuggestions
CtsAppAccessData libarity libpvstreamingmanagernode SmokeTest
CtsAppSecurityTests libastl libpvthreadmessaging SmokeTestApp
CtsAppTestCases libaudioflinger libpvwav Snake
CtsAppWithData libaudiointerface libpvwavffparsernode SnakeTests
CtsBluetoothTestCases libaudiopolicygeneric libpvwavffrecognizer SoftKeyboard
CtsContentTestCases libbinder librank soslim
cts-dalvik-buildutil libbz libreference-cdma-sms sound
CtsDatabaseTestCases libc libreference-ril SoundRecorder
CtsDelegatingAccessibilityService libcameraservice libril SpammySuggestions
CtsDpiTestCases libcamerastub libRS SpareParts
CtsDpiTestCases2 libc_common librs_jni spec-progress
CtsExampleTestCases libc_debug librtppayloadparser sqlite3
CtsGestureTestCases libclearsilver-jni librtprtcp SRecTest
CtsGraphicsTestCases libc_nomalloc libsafe_iop SRecTestAudio
CtsHardwareTestCases libcolorconvert libsampleplugin ssh
CtsInstrumentationAppDiffCert libcpm libSDL SslLoad
CtsJniTestCases libcrypto libSDLmain stack_dump
CtsLocationTestCases libctest libsimplejni StatusBarTest
CtsMediaTestCases libcts_jni libskia Stk
CtsNetTestCases libctspermission_jni libskiagl strace
CtsOsTestCases libcutils libsonivox stringtemplate
CtsPerformance2TestCases libdb libsoundpool su
CtsPerformance3TestCases libdbus libspeex surfaceflinger
CtsPerformance4TestCases libdbus-tools-common libsqlite svc
CtsPerformance5TestCases libdex libsqlite3_Android swing-worker-1.1
CtsPerformanceTestCases libdl libsqlite3_phone_number_utils_test swt
CtsPermission2TestCases libdrm1 libsqlite3_phonetic_string_utils_test system_server
CtsPermissionDeclareApp libdrm1_jni libSR_AcousticModels tcpdump
CtsPermissionTestCases libdrm2 libSR_AcousticState TelephonyProvider
CtsProviderTestCases libdvm libSR_AudioIn telephonytest
CtsSharedUidInstall libebl libSR_Core temp_layoutlib
CtsSharedUidInstallDiffCert libebl_arm libsrec_jni Term
CtsSimpleAppInstall libedify libSR_EventLog test_defs.xml
CtsSimpleAppInstallDiffCert libEGL libSR_G2P TestDeviceSetup
CtsSpeechTestCases libelf libSR_Grammar test-fb-refresh
CtsTargetInstrumentationApp libelfcopy libSR_Nametag test-fb-simple
CtsTelephonyTestCases libembunit libSR_Recognizer test_g2g
CtsTestStubs libemoji libSR_Semproc test-mdp
CtsTextTestCases libESR_Portable libSR_Session test-opengl-codegen
CtsUsePermissionDiffCert libESR_Shared libSR_Vocabulary test-opengl-fillrate
CtsUtilTestCases libETC1 libssl test-opengl-filter
CtsViewTestCases libexif libstagefright test-opengl-finish
CtsWebkitTestCases libexpat libstagefright_omx test-opengl-gl2_basic
CtsWidgetTestCases libext libstdc++ test-opengl-gl_basic
CubeLiveWallpapers libfdlibm libsurfaceflinger test-opengl-gralloc
CustomLocale libFFTEm libsvoxpico test-opengl-linetex
daemonize libfst libsystem_server test-opengl-swapinterval
dalvikvm libft2 libsysutils test-opengl-textures
dasm libgetactualaacconfig libterm test-opengl-tritex
dbus-daemon libgif libtestplugin test-progress
dbus-monitor libgl2jni libthread_db test-progress-new
dbus-send libGLES_Android libthreadsafe_callback_ao test_swiarb
ddmlib libGLESv1_CM libtinyxml test_zipfile
ddms libGLESv2 libtomcrypt timeinfo
ddmuilib libgljni libtommath timetest
debuggerd libgoogleclient libttspico toolbox
DensityTest libgtest libttssynthproxy traceview
descGen libgtest_main libui TransformTest
DeskClock libhardware libunz TtsService
Development libhardware_legacy libutil tuttle2.kcm
dexdeps libhost libutils uix
dexdump libicudata-default libvorbisidec updater
dexlist libicudata-eu libwbxml UpgradeExample
dexopt libicudata-jp libwbxml_jni usbtest
dexopt-wrapper libicudata-large libwebcore UserDictionaryProvider
dexpreopt libicudata-us libwnndict VisualizationWallpapers
dex-tools libicui18n libWnnEngDic vm-tests
dhcpcd libicuuc libWnnJpnDic VoiceDialer
dhcpcd-run-hooks libiptc libwpa_client Voiper
dictTest libjavacore libxml2 vold
DisabledTestApp libjni_latinime libxml2wbxml VpnServices
dmtracedump libjni_pinyinime libz wbxmltest
DownloadProvider libjnitest libzipfile wdsclient
draw9patch libjpeg LightingTest webkitmerge
DrmProvider liblog line_endings Wiktionary
droiddoc libm linker WiktionarySimple
dumpeventlog libm4v_config LiveWallpapers xmlwriter
dumpkey libmedia LiveWallpapersPicker yuv420sp2rgb
dump_regions libmedia_jni localize zipalign
DumpRenderTree libmediaplayerservice logcat
dumpstate libmincrypt logwrapper
make[1]: Leaving directory `/home/<myuser>/WORKING_DIRECTORY'
rm -rf *.c~
rm -rf *.mod*
rm -rf *.o
いくつかのねじれた警告に気づくでしょうが、私が知る限り、それらは実際の問題ではありません。これらについて誰かが違うと感じている場合は、そのように言ってください。
make[1]: Entering directory `/home/<myuser>/WORKING_DIRECTORY'
build/core/copy_headers.mk:15: warning: overriding commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'
build/core/copy_headers.mk:15: warning: ignoring old commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'
/bin/bash: line 0: cd: sdk/layoutopt/app/src/resources: No such file or directory
最後の行はかなり疑わしいと思いますが、どうすればいいのかわかりません。私が言及したいくつかの奇妙なことを除いて、これはすべて順調に進んだように見えます。しかし、すべてが完了した後、*。koファイルが見つかりません。ホームディレクトリでls -alRg | grep *.ko
を実行したところ、何も表示されません。私は困惑しています。さらに情報を提供したり、テストを実行したり、別の方法で試したりできる場合は、頻繁にチェックインします。
遅くなってすみませんが、それが役に立てば幸いです:
私は自分のSony Ericsson Xperia Arc Sでコードを作成してテストしましたが、正常に機能します(通常、Android電話)で機能するはずです)。
AdbとUSBを介して接続し、ルートに「su」すると、「lsmod」にすべてのカーネルモジュールがリストされます(一般に、記事 http://developer.sonyericsson.com/wp/2011/05/06)/how-to-build-a-linux-kernel / は、SonyEricsson電話用のLinuxカーネルコンパイルで何をすべきかを非常によくカバーしています):
lsmod
Android_module 654 0 - Live 0x7f007000 (P)
sdio 16532 0 - Live 0x7f000000
「Android_module」は、insmod Android_module.ko
を介して挿入したものです。
方法は次のとおりです。
最初に、元のプログラムが以下からコピーされました。
http://rechtzeit.wordpress.com/2011/03/21/77/
または次のように複製します:
Android_module.c:
#include"linux/module.h"
#include"linux/kernel.h"
//replace the "" with angular brackets
int init_module(void)
{
printk(KERN_INFO "Hello Android kernel...\n");
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "Goodbye Android kernel...\n");
}
Makefile:
obj-m += Android_module.o
all:
make -C /home/tteikhua/Android/sony_ericsson_src/58/kernel/ M=$(PWD) modules
clean:
make -C /home/tteikhua/Android/sony_ericsson_src/58/kernel/ M=$(PWD) clean
カーネルが配置されているディレクトリ(上記の「-C」)は、SonyEricssonカーネルイメージをここからダウンロードした場所です。
http://developer.sonyericsson.com/wportal/devworld/downloads/download/30a2181182tarbz2?cc=gb&lc=en
次のコマンドは、上記のMakefileを使用します。
Arch=arm CROSS_COMPILE=/opt/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi- make
上記のように、私が使用したクロスコンパイラはCodeSourceryのものです。
そしてinsmod Android_module.ko
の後、dmesg
出力にデバッグメッセージが表示されます。
<6>[11184.063507] Hello Android kernel...
<7>[11619.209655] msmrtc_timeremote_set_time: 11/29/2011 10:09:36 (04)
<6>[11619.210418] RPC CALL -- TOD TIME UPDATE: ttick = 404244221
<6>[11619.210418] stamp=52910543933046785, freq = 0
<7>[11619.211578] msmrtc_tod_proc_result: 12/29/2011 10:09:36 (03)
<6>[11619.211578] rs30000048 rs30000048.262144: setting system clock to 2011-12-29 10:09:36 UTC (1325153376)
<6>[11662.112365] device rmnet0 left promiscuous mode
<6>[11662.112579] device rmnet0 entered promiscuous mode
<6>[11669.958221] device rmnet0 left promiscuous mode
<6>[11669.958435] device rmnet0 entered promiscuous mode
<7>[11698.181060] msmrtc_timeremote_set_time: 11/29/2011 10:10:55 (04)
<6>[11698.187622] RPC CALL -- TOD TIME UPDATE: ttick = 406832008
<6>[11698.187652] stamp=52910548228014081, freq = 0
<7>[11698.193939] msmrtc_tod_proc_result: 12/29/2011 10:10:55 (03)
<6>[11698.194030] rs30000048 rs30000048.262144: setting system clock to 2011-12-29 10:10:55 UTC (1325153455)
<6>[11814.442901] bq27520 0-0055: bq27520_handle_soc_worker() capacity=97 (100) flags=0x229 ctrl_status=0x28b soh_state=0x3, valid=1
<6>[11984.057373] Goodbye Android kernel...
そして、「さようなら」はrmmod Android_module
が実行されるときです。その中間には、カーネル内の他のコンポーネントからのデバッグメッセージがあります。
エミュレーターカーネルがモジュールをサポートしていないと思うので、モジュールサポート付きのカーネルもコンパイルする必要があります。
このリンク がお役に立てば幸いです
やらなければならないことが2つあります。まず、ロード可能なカーネルモジュールをサポートするエミュレータカーネルを作成します。
包括的な ここに投稿 があり、エミュレーターカーネルのセットアッププロセスをカバーしています。
変更する手順には2つの部分があります。
次のように、カーネルをリポ領域(この場合は〜/ WORKING_DIRECTORY)内に保持するのが最も簡単です。
cd ~/WORKING_DIRECTORY
mkdir kernel
cd kernel
git clone git://Android.git.kernel.org/kernel/common.git
ただし、ブランチ情報は正しくないため、次のように記載されています。
git checkout -t Origin/Android-goldfish-2.6.29 -b goldfish
代わりにこれを使用してください:
git checkout -t archive/Android-gldfish-2.6.29 -b goldfish
ご存知のように、デフォルトではカーネルはロード可能なモジュールのサポートで構成されていません。コンパイルする前に有効にします。後、このステップ:
make Arch=arm goldfish_defconfig
これを行う:
make Arch=arm menuconfig
テキストベースのメニューが表示されます。上/下矢印キーを使用して移動し、スペースを使用してオプションを選択し、Enterキーを押してメニューを展開します(メニューには--->があります)、Esc-Escを使用してメニューに戻ります。
ビルドします。あなたの設定を使用すると、それは次のようになります:
make Arch=arm CROSS_COMPILE=/home/<myuser>/WORKING_DIRECTORY/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
これで、ロード可能なカーネルモジュールを作成する2番目の部分を実行できます。もう少しで完了ですが、エミュレータのカーネルソースがないため、機能しませんでした。あなたが持っているmakefileを取り、KERNEL_DIRを次のように変更してください:
KERNEL_DIR ?= /home/<myuser>/WORKING_DIRECTORY/kernel/common