精华内容
下载资源
问答
  • 交叉编译那些

    2018-12-05 19:16:53
    那些年,交叉编译那些 编译 python2.7.11 arm64 复制代码  1 先编译个x86版本。  2 mkdir build.pc  3 cd build.pc   4 ../configure --disable-ipv6 --enable-shared   5 make   6   7 编译arm64版本...

    那些年,交叉编译那些事
    编译 python2.7.11 arm64

    复制代码
     1 先编译个x86版本。
     2 mkdir build.pc
     3 cd build.pc 
     4 ../configure --disable-ipv6 --enable-shared 
     5 make 
     6 
     7 编译arm64版本之前,先在configure文件前面添加
     8 ac_cv_file__dev_ptmx=yes
     9 ac_cv_file__dev_ptc=no
    10 
    11 mkdir build.arm64
    12 cd build.arm64
    13 ../configure --host=aarch64-linux-gnu --prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu --disable-ipv6 --enable-shared --build=aarch64
    14 
    15 遇到错误1:
    16 Parser/pgen ../Grammar/Grammar Include/graminit.h Python/graminit.c
    17 Parser/pgen: Parser/pgen: cannot execute binary file
    18 make: *** [Include/graminit.h] Error 126
    19 拷贝build.pc的pgen即可解决。
    20 cp /home/trait/v8le/Python-2.7.11/build.pc/Parser/pgen ./Parser/
    21 
    22 make && make install
    23 在make install的需要修改Makefile里PYTHONPATH,添加x86的lib目录,如:PYTHONPATH=/home/trait/v8le/Python-2.7.11/build.pc/build/lib.linux-i686-2.7:(shell ..)
    复制代码
    编译 libffi-3.2.1 arm64
    1 mkdir build.arm64
    2 cd build.arm64
    3 ../configure --host=aarch64-linux-gnu --prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu --enable-shared 
    4 make && make install 
    编译 zlib-1.2.8 arm64
    1 ./configure --prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu
    2 修改Makefile
    3 修改gcc为aarch64-linux-gnu-gcc 
    4 修改ar为aarch64-linux-gnu-ar 
    5 修改ranlib为aarch64-linux-gnu-ranlib
    6 make && make install
    编译 glib-2.46.2 arm64
    复制代码
     1 mkdir build.arm64
     2 cd build.arm64
     3 
     4 echo ac_cv_type_long_long=yes>aarch64.cache
     5 echo glib_cv_stack_grows=no>>aarch64.cache
     6 echo glib_cv_uscore=no>>aarch64.cache
     7 echo ac_cv_func_posix_getpwuid_r=yes>>aarch64.cache
     8 echo ac_cv_func_posix_getgrgid_r=yes>>aarch64.cache
     9 
    10 ../configure --host=aarch64-linux-gnu --prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu --cache-file=aarch64.cache LIBFFI_CFLAGS=-I/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu/include LIBFFI_LIBS=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu/lib64/libffi.la
    11 
    12 遇到错误1:
    13 ../../gobject/gclosure.c:28:17: fatal error: ffi.h: No such file or directory
    14  #include <ffi.h>
    15 这是libffi安装的时候将它的头文件安装在lib目录下,如下解决:
    16 cd /home/trait/v8le/linaro-aarch64/aarch64-linux-gnu/include
    17 ln -s ../lib/libffi-3.2.1/include/ffi.h ffi.h
    18 ln -s ../lib/libffi-3.2.1/include/ffitarget.h ffitarget.h
    19 
    20 遇到错误2:
    21 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_void'
    22 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_double'
    23 ./.libs/libgobject-2.0.so: undefined reference to `ffi_prep_cif'
    24 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_sint32'
    25 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_float'
    26 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_uint64'
    27 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_sint64'
    28 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_pointer'
    29 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_uint32'
    30 ./.libs/libgobject-2.0.so: undefined reference to `ffi_call'
    31 同样是libffi的安装问题,如下解决:
    32 cd /home/trait/v8le/linaro-aarch64/aarch64-linux-gnu
    33 cp ./lib64/* ./lib
    复制代码
    编译 libaio-0.3.110 arm64
    1 make prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu CC=aarch64-linux-gnu-gcc 
    2 make prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu CC=aarch64-linux-gnu-gcc install
    编译 openssl-1.0.1s arm4
    1 CC=aarch64-linux-gnu-gcc ./config no-asm shared --prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu
    2 make && make install
    编译 ncurses-6.0 arm64 && 编译libuuid arm64
    1 mkdir build.arm64
    2 cd build.arm64
    3 ../configure --host=aarch64-linux-gnu --prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu --enable-shared 
    4 make && make install 
    编译 libfdt(device-tree-compiler_1.4.0)
    1 make CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar RANLIB=aarch64-linux-gnu-ranlib PREFIX=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu
    2 make CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar RANLIB=aarch64-linux-gnu-ranlib PREFIX=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu install
    编译 yajl_1.0.12 arm64
    复制代码
     1 需先安装cmake
     2 第一步,修改CMakelist SET (YAJL_MAJOR 12)后面 添加: 
     3 SET (CMAKE_C_COMPILER "aarch64-linux-gnu-gcc")
     4 第二步,注释掉下面3行:
     5 #ADD_CUSTOM_TARGET(test
     6 #                  ./run_tests.sh ${CMAKE_CURRENT_BINARY_DIR}/test/yajl_test
     7 #                  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test)
     8 
     9 ./configure --prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu
    10 make && make install
    复制代码
    编译 xen4.4.1 arm64
    复制代码
    1 make dist-xen XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINTK=fastmodel
    2 make dist-xen XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINTK=xgene-storm debug=y 
    3 make dist-xen XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINTK=xgene-storm debug=y MAX_PHYS_CPUS=8
    4 make dist-xen XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINTK=xgene-storm debug=y HAS_GICV3=y 
    5 make dist-xen XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINTK=vexpress debug=y HAS_GICV3=y 
    6                                                                      
    7 带dtb编译:
    8 make dist-xen XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINT=fastmodel CONFIG_DTB_FILE=/home/trait/workspace/linux-3.14.65/arch/arm64/boot/dts/foundation-v8.dtb
    复制代码
    编译 xen tools arm64
    复制代码
    1 ./configure --host=aarch64-linux-gnu --build=aarch64 glib_CFLAGS=-I/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu/include/glib-2.0 glib_LIBS=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu/lib/libglib-2.0.la

    3 遇到错误1:
    4 configure: error: ./configure failed for tools
    5 这是ncurses的目录问题,如下解决:
    6 cd /home/trait/v8le/linaro-aarch64/aarch64-linux-gnu/include
    7 ln -s ./ncurses/curses.h ncurses.h

    9 make XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINT=fastmodel 
    复制代码
    编译 linux-3.14 + xen支持的
    复制代码
     1 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
     2 sed -e 's/.*CONFIG_XEN is not set/CONFIG_XEN=y/g' -i .config
     3 sed -e 's/.*CONFIG_BLK_DEV_LOOP is not set/CONFIG_BLK_DEV_LOOP=y/g' -i .config
     4 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig
     5 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image
     6 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dtbs
     7 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules
     8 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/home/trait/modules_install
     9 
    10 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
    11 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image
    12 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- arm64_fr_defconfig
    13 -------------------------------------------------------------------------------------------------------------------------
    14 
    15 mkimage -T multi -C gzip -a 0 -e 0 -n xen-uImage -d Image.gz:foundation-v8.dtb.gz xen-uImage.gzip
    16 
    17 #mkimage -A arm -T kernel -a 0x80200000 -e 0x80200000 -C none -d /home/trait/workspace/xen/xen/xen xen-uImage
    18 
    19 mkimage -A arm64 -T kernel -a 0x80800000 -e 0x80800000 -C none -d xen uXen
    20 mkimage -A arm64 -T kernel -a 0x80200000 -e 0x80200000 -C none -d xen uXen
    21 --------------------------------------------------------------------------------------------------------------------------
    22 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- xgene_xen_defconfig
    23 make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm vexpress_defconfig
    24 make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm zImage
    25 qemu-system-arm -M vexpress-a9 -m 512M -kernel /home/trait/qemu-linux/linux-3.14.65/arch/arm/boot/zImage -nographic -append "root=/dev/mmcblk0  console=ttyAMA0" -sd a9rootfs.ext3
    复制代码
    编译uboot 2013-10
    1 先安装arm-linux-gnu-gcc,网上下载

    3 # make ARCH=arm CROSS_COMPILE=arm-linux-gnu- smdk2410_config 与下面的效果相同
    4 make smdk2410_config
    5 make all
    xen u-boot
    复制代码
    1 setenv ipaddr 10.60.15.53;setenv serverip 10.60.40.11;setenv xen_addr_r 0x90000000;setenv netmask 255.255.0.0;setenv kern_addr_r 0x98000000;setenv fdt_addr_r 0x99000000 
    2 setenv xen_load 'tftp ${xen_addr_r} uXen';setenv xen_dtb 'tftp ${fdt_addr_r} u-boot.dtb;fdt addr  ${fdt_addr_r};fdt resize;'
    3 setenv xen_boot 'setenv bootargs ${bootargs_xen};bootm ${xen_addr_r} - ${fdt_addr_r}' 
    4 setenv dom0_node 'fdt set /chosen/module@0 compatible xen,linux-zimage xen,multiboot-module'
    5 setenv xen_dom0 'tftp ${kern_addr_r} Image; run dom0_node;fdt set /chosen/module@0 reg < 0x0 ${kern_addr_r} 0x${filesize} >'
    6 setenv xen_run 'run xen_dtb xen_dom0 xen_load;fdt print /chosen;run xen_boot'
    7 setenv bootargs_xen 'conswitch=x sync_console dom0_mem=1G dom0_max_vcpus=1 console=dtuart dtuart=/smb/motherboard/amba/uart@28001000'

    9 # setenv bootargs_xen 'conswitch=x sync_console dom0_mem=1G dom0_max_vcpus=1 console=dtuart dtuart=/smb/uart@28001000'
    复制代码
    编译gdbserver aarch64
    复制代码
     1 --------------------主机-----------------------------
     2 mkdir build.pc 
     3 cd build.pc
     4 ../configure --target=aarch64-linux-gnu
     5 
     6 make 
     7 ---------------------目标机--------------------------
     8 mkdir build.arm64 
     9 cd build.arm64
    10 ../configure --prefix=/home/trait/gnu-tools/install --target=aarch64-linux-gnu --host=aarch64-linux-gnu
    11 make CC=/home/trait/v8le/linaro-aarch64/bin/aarch64-linux-gnu-gcc

    展开全文
  • https://scikit-learn.org/stable/modules/cross_validation.htmlhttps://blog.csdn.net/xiaodongxiexie/article/details/71915259​blog.csdn.net主要问题在于遇到时间相关的数据,有时候交叉验证会坏事儿——时间...
    https://scikit-learn.org/stable/modules/cross_validation.htmlhttps://blog.csdn.net/xiaodongxiexie/article/details/71915259blog.csdn.net

    主要问题在于遇到时间相关的数据,有时候交叉验证会坏事儿——时间泄露的问题等,还是整理一下;

    1、train_test_split

    import numpy as np
    from sklearn.model_selection import train_test_split
    from sklearn import datasets
    from sklearn.model_selection import KFold,StratifiedKFold,train_test_split
    X = ["a", "b", "c", "d"]
    y =  [0,0,1,1]
    train_test_split(X,test_size=0.5,shuffle=True,stratify=None)
    

    需要注意的是,train_test_split默认会对原始数据进行shuffle,如果设置了stratify则会在不同的类别进行shuffle后选择或者直接选择。.

    37615f104e181664c5c75738d1796cb2.png
    train_test_split(X,test_size=0.5,shuffle=True,stratify=y)
    

    c46fd2b1bdcad4dfae9b7261c98cc733.png

    2、KFold

    X = ["a", "b", "c", "d","e","f"]
    kf = KFold(n_splits=3,shuffle=False,random_state=123)
    for train, test in kf.split(X):
        print("%s %s" % (train, test))

    b317ecb582c8ccaf0c057d9f3d4d6c7a.png

    需要注意的是,KFold默认是不shuffle的,则切割的时候数据永远都是按照原始数据的顺序切割的,对于无序的数据可能没有问题,但是对于时序数据就有很大问题,比如我们看上图的[0,1,2,3],[4,5],假设原始样本完全按照时间先后排序,则这样恰好[0,1,2,3]为过去的样本,[4,5]为未来的样本,对于时序问题来说,这样切分是合理的,但是看第一组[2,3,4,5],[0,1]我们实际上是用未来的数据来预测当前的数据的,这样的切分是不合理的,因为这不是很符合模型的实际的应用场景,我们不可能用未来的数据来预测过去的数据,所以这样切分反应出来的评价指标可能也是有一定偏差的。

    X = ["a", "b", "c", "d","e","f"]
    kf = KFold(n_splits=3,shuffle=True,random_state=123)
    for train, test in kf.split(X):
        print("%s %s" % (train, test))

    0356bf53e350339d8dca72319b535e96.png

    显然,进行shuffle之后,对于时序数据,未来泄露的问题仍旧是存在的。


    3、StratifiedKFold

    分层抽样,

    X = ["a", "b", "c", "d","e","f"]
    y=  [0,1,0,1,0,1]
    kf = StratifiedKFold(n_splits=3,shuffle=False)
    for train, test in kf.split(X,y):
        print("%s %s" % (train, test))

    58560b90958098d695c90fc0ce694da7.png

    可以看到,和kfold的模式基本类似,stratifiedKFold只不过按照类别进行kfold抽样,如果不设置shuffle也是按照原始数据表的顺序取数,shuffle之后才是按照随机的顺序取数

    X = ["a", "b", "c", "d","e","f"]
    y=  [0,1,0,1,0,1]
    kf = StratifiedKFold(n_splits=3,shuffle=True)
    for train, test in kf.split(X,y):
        print("%s %s" % (train, test))

    19246fcdd0c09b8c775bca688819b406.png

    从这个层面来说,sklearn的这些api的采样功能和bagging是完全不同的,bagging是有放回,而上述的采样全是不放回抽样,每次采样的测试集样本都不同。最终是原始数据集的所有样本都在某次采样的过程中沦为测试集,从而达到充分利用原始数据的目的。

    4、RepeatedKFold 与 RepeatedStratifiedKFold

    重复K折n次。当需要运行KFoldn次,每次重复产生不同的分割时,可以使用它。

    X = ["a", "b", "c", "d","e","f"]
    y=  [0,1,0,1,0,1]
    rkf = RepeatedKFold(n_splits=3, n_repeats=2,)
    for train_index, test_index in rkf.split(X):
         print("TRAIN:", train_index, "TEST:", test_index)
    ...
    

    75b466782b87990481761fb3724accb1.png

    根据多次运行的结果,其实现逻辑是每次都shuffle数据然后进行kfold。

    类似地,RepeatedStratifiedKFold在每次重复中以不同的随机性重复n次StratifiedKFold。


    那么如果我们希望进行像bagging那样有放回抽样的采样方法然后进行交叉验证应该使用什么,答案就是:

    5、ShuffleSplit或者针对分层的StratifiedShuffleSplit

    X = ["a", "b", "c", "d","e","f"]
    y=  [0,1,0,1,0,1]
    rkf = ShuffleSplit(n_splits=3,test_size=0.3)
    for train_index, test_index in rkf.split(X):
         print("TRAIN:", train_index, "TEST:", test_index)
     

    b782235b958cf9d58ef8a56e8e471a34.png

    这样就产生了有放会抽样进行交叉检验的功能,不过麻烦的地方是test_size必须设置,否则默认为0.1,不会自动根据n_splits给你算出来。

    StratifiedShuffleSplit 原理基本一样的。


    6、groupbyKfold和GroupShuffleSplit

    GroupKFold是k倍的变化形式,可确保在测试和训练集中均不代表同一组。例如,如果数据是从不同的主题中获得的,每个主题有多个样本,并且该模型足够灵活以向高度特定于人的特征学习,则可能无法推广到新主题。GroupKFold使检测这种过拟合情况成为可能。
    每个主题都处于不同的测试折叠中,并且同一主题从不进行测试和培训
    >>> from sklearn.model_selection import GroupKFold
    
    >>> X = [0.1, 0.2, 2.2, 2.4, 2.3, 4.55, 5.8, 8.8, 9, 10]
    >>> y = ["a", "b", "b", "b", "c", "c", "c", "d", "d", "d"]
    >>> groups = [1, 1, 1, 2, 2, 2, 3, 3, 3, 3]
    
    >>> gkf = GroupKFold(n_splits=3)
    >>> for train, test in gkf.split(X, y, groups=groups):
    ...     print("%s %s" % (train, test))
    [0 1 2 3 4 5] [6 7 8 9]
    [0 1 2 6 7 8 9] [3 4 5]
    [3 4 5 6 7 8 9] [0 1 2]
    
    >>> gkf = GroupKFold(n_splits=2)
    >>> for train, test in gkf.split(X, y, groups=groups):
    ...     print("%s %s" % (train, test))
    [0 1 2 3 4 5] [6 7 8 9]
    [6 7 8 9] [0 1 2 3 4 5]

    举个例子,假设我们的样本有一个特征叫“行业”,这个特征显示样本来自于三个不同的行业:医疗;金融;计算机,同行业的样本特征分布类似,不同行业之间样本特征分布差异性比较大,那么假设训练集中存在医疗,则模型可以在训练的过程中学习到这个行业信息同时过度依赖于行业信息,从而对于测试集中做出很好的预测结果,举一个极端的情况,可能模型仅仅通过行业的信息就能够很精确的预测出测试集的标签,但是我们希望模型能够独立于行业这个特征学到其它特征中存在的潜在的某种模式,那么这个时候使用groupbykfold就比较合适。 通过groupbykfold可以保证训练集和测试集在这个行业特征上不存在交叉的情况。

    对应的GroupShuffleSplit就是加入了shuffle

    7、TimeSeriesSplit

    >>> from sklearn.model_selection import TimeSeriesSplit
    
    >>> X = np.array([[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4]])
    >>> y = np.array([1, 2, 3, 4, 5, 6])
    >>> tscv = TimeSeriesSplit(n_splits=3)
    >>> print(tscv)
    TimeSeriesSplit(max_train_size=None, n_splits=3)
    >>> for train, test in tscv.split(X):
    ...     print("%s %s" % (train, test))
    [0 1 2] [3]
    [0 1 2 3] [4]
    [0 1 2 3 4] [5]

    关于时间序列的一种交叉验证的思路。看输出结果就知道逻辑是什么了。。。遇到强时间序列相关的性质的问题这种交叉验证的思路比较合理。

    8、关于时间序列验证的其它

    TSCV: A Python package for Time Series Cross-Validationwww.zhengwenjie.net

    之前在kaggle上看到kris提出的关于gap的时间验证的方法,后来找到了同思路的实现,时间序列做的不多,不知道具体为啥这么做,这里贴出来吧。

    61795654912afd5f535ce13a7a6c2571.png

    和sklearn无缝衔接;

    >>> from tscv import GapLeavePOut
    >>> cv = GapLeavePOut(p=3, gap_before=1, gap_after=2)
    >>> for train, test in cv.split(range(7)):
    ...    print("train:", train, "test:", test)
    
    train: [5 6]   test: [0 1 2]
    train: [6]     test: [1 2 3]
    train: [0]     test: [2 3 4]
    train: [0 1]   test: [3 4 5]
    train: [0 1 2] test: [4 5 6]

    懒得写了,有补充吧,回家。

    有一些用的少的暂时不介绍了。

    展开全文
  • 编译 python2.7.11 arm64 1 先编译个x86版本。 2 mkdir build.pc 3 cd build.pc ... 4 ../configure --disable-ipv6 --enable-shared ... 7 编译arm64版本之前,先在configure文件前面添加 ...

    编译 python2.7.11 arm64

     1 先编译个x86版本。
     2 mkdir build.pc
     3 cd build.pc 
     4 ../configure --disable-ipv6 --enable-shared 
     5 make 
     6 
     7 编译arm64版本之前,先在configure文件前面添加
     8 ac_cv_file__dev_ptmx=yes
     9 ac_cv_file__dev_ptc=no
    10 
    11 mkdir build.arm64
    12 cd build.arm64
    13 ../configure --host=aarch64-linux-gnu --prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu --disable-ipv6 --enable-shared --build=aarch64
    14 
    15 遇到错误1:
    16 Parser/pgen ../Grammar/Grammar Include/graminit.h Python/graminit.c
    17 Parser/pgen: Parser/pgen: cannot execute binary file
    18 make: *** [Include/graminit.h] Error 126
    19 拷贝build.pc的pgen即可解决。
    20 cp /home/trait/v8le/Python-2.7.11/build.pc/Parser/pgen ./Parser/
    21 
    22 make && make install
    23 在make install的需要修改Makefile里PYTHONPATH,添加x86的lib目录,如:PYTHONPATH=/home/trait/v8le/Python-2.7.11/build.pc/build/lib.linux-i686-2.7:(shell ..)

    编译 libffi-3.2.1 arm64

    1 mkdir build.arm64
    2 cd build.arm64
    3 ../configure --host=aarch64-linux-gnu --prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu --enable-shared 
    4 make && make install 

    编译 zlib-1.2.8 arm64

    1 ./configure --prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu
    2 修改Makefile
    3 修改gcc为aarch64-linux-gnu-gcc 
    4 修改ar为aarch64-linux-gnu-ar 
    5 修改ranlib为aarch64-linux-gnu-ranlib
    6 make && make install

    编译 glib-2.46.2 arm64

     1 mkdir build.arm64
     2 cd build.arm64
     3 
     4 echo ac_cv_type_long_long=yes>aarch64.cache
     5 echo glib_cv_stack_grows=no>>aarch64.cache
     6 echo glib_cv_uscore=no>>aarch64.cache
     7 echo ac_cv_func_posix_getpwuid_r=yes>>aarch64.cache
     8 echo ac_cv_func_posix_getgrgid_r=yes>>aarch64.cache
     9 
    10 ../configure --host=aarch64-linux-gnu --prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu --cache-file=aarch64.cache LIBFFI_CFLAGS=-I/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu/include LIBFFI_LIBS=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu/lib64/libffi.la
    11 
    12 遇到错误1:
    13 ../../gobject/gclosure.c:28:17: fatal error: ffi.h: No such file or directory
    14  #include <ffi.h>
    15 这是libffi安装的时候将它的头文件安装在lib目录下,如下解决:
    16 cd /home/trait/v8le/linaro-aarch64/aarch64-linux-gnu/include
    17 ln -s ../lib/libffi-3.2.1/include/ffi.h ffi.h
    18 ln -s ../lib/libffi-3.2.1/include/ffitarget.h ffitarget.h
    19 
    20 遇到错误2:
    21 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_void'
    22 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_double'
    23 ./.libs/libgobject-2.0.so: undefined reference to `ffi_prep_cif'
    24 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_sint32'
    25 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_float'
    26 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_uint64'
    27 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_sint64'
    28 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_pointer'
    29 ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_uint32'
    30 ./.libs/libgobject-2.0.so: undefined reference to `ffi_call'
    31 同样是libffi的安装问题,如下解决:
    32 cd /home/trait/v8le/linaro-aarch64/aarch64-linux-gnu
    33 cp ./lib64/* ./lib

    编译 libaio-0.3.110 arm64

    1 make prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu CC=aarch64-linux-gnu-gcc 
    2 make prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu CC=aarch64-linux-gnu-gcc install

    编译 openssl-1.0.1s arm4

    1 CC=aarch64-linux-gnu-gcc ./config no-asm shared --prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu
    2 make && make install

    编译 ncurses-6.0 arm64 && 编译libuuid arm64

    1 mkdir build.arm64
    2 cd build.arm64
    3 ../configure --host=aarch64-linux-gnu --prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu --enable-shared 
    4 make && make install 

    编译 libfdt(device-tree-compiler_1.4.0)

    1 make CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar RANLIB=aarch64-linux-gnu-ranlib PREFIX=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu
    2 make CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar RANLIB=aarch64-linux-gnu-ranlib PREFIX=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu install

    编译 yajl_1.0.12 arm64

     1 需先安装cmake
     2 第一步,修改CMakelist SET (YAJL_MAJOR 12)后面 添加: 
     3 SET (CMAKE_C_COMPILER "aarch64-linux-gnu-gcc")
     4 第二步,注释掉下面3行:
     5 #ADD_CUSTOM_TARGET(test
     6 #                  ./run_tests.sh ${CMAKE_CURRENT_BINARY_DIR}/test/yajl_test
     7 #                  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test)
     8 
     9 ./configure --prefix=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu
    10 make && make install

    编译 xen4.4.1 arm64

    1 make dist-xen XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINTK=fastmodel
    2 make dist-xen XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINTK=xgene-storm debug=y 
    3 make dist-xen XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINTK=xgene-storm debug=y MAX_PHYS_CPUS=8
    4 make dist-xen XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINTK=xgene-storm debug=y HAS_GICV3=y 
    5 make dist-xen XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINTK=vexpress debug=y HAS_GICV3=y 
    6                                                                      
    7 带dtb编译:
    8 make dist-xen XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINT=fastmodel CONFIG_DTB_FILE=/home/trait/workspace/linux-3.14.65/arch/arm64/boot/dts/foundation-v8.dtb

    编译 xen tools arm64

    1 ./configure --host=aarch64-linux-gnu --build=aarch64 glib_CFLAGS=-I/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu/include/glib-2.0 glib_LIBS=/home/trait/v8le/linaro-aarch64/aarch64-linux-gnu/lib/libglib-2.0.la
    2 
    3 遇到错误1:
    4 configure: error: ./configure failed for tools
    5 这是ncurses的目录问题,如下解决:
    6 cd /home/trait/v8le/linaro-aarch64/aarch64-linux-gnu/include
    7 ln -s ./ncurses/curses.h ncurses.h
    8 
    9 make XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CONFIG_EARLY_PRINT=fastmodel 

    编译 linux-3.14 + xen支持的

     1 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
     2 sed -e 's/.*CONFIG_XEN is not set/CONFIG_XEN=y/g' -i .config
     3 sed -e 's/.*CONFIG_BLK_DEV_LOOP is not set/CONFIG_BLK_DEV_LOOP=y/g' -i .config
     4 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig
     5 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image
     6 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dtbs
     7 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules
     8 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/home/trait/modules_install
     9 
    10 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
    11 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image
    12 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- arm64_fr_defconfig
    13 -------------------------------------------------------------------------------------------------------------------------
    14 
    15 mkimage -T multi -C gzip -a 0 -e 0 -n xen-uImage -d Image.gz:foundation-v8.dtb.gz xen-uImage.gzip
    16 
    17 #mkimage -A arm -T kernel -a 0x80200000 -e 0x80200000 -C none -d /home/trait/workspace/xen/xen/xen xen-uImage
    18 
    19 mkimage -A arm64 -T kernel -a 0x80800000 -e 0x80800000 -C none -d xen uXen
    20 mkimage -A arm64 -T kernel -a 0x80200000 -e 0x80200000 -C none -d xen uXen
    21 --------------------------------------------------------------------------------------------------------------------------
    22 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- xgene_xen_defconfig
    23 make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm vexpress_defconfig
    24 make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm zImage
    25 qemu-system-arm -M vexpress-a9 -m 512M -kernel /home/trait/qemu-linux/linux-3.14.65/arch/arm/boot/zImage -nographic -append "root=/dev/mmcblk0  console=ttyAMA0" -sd a9rootfs.ext3

    编译uboot 2013-10

    1 先安装arm-linux-gnu-gcc,网上下载
    2 
    3 # make ARCH=arm CROSS_COMPILE=arm-linux-gnu- smdk2410_config 与下面的效果相同
    4 make smdk2410_config
    5 make all

    xen u-boot

    1 setenv ipaddr 10.60.15.53;setenv serverip 10.60.40.11;setenv xen_addr_r 0x90000000;setenv netmask 255.255.0.0;setenv kern_addr_r 0x98000000;setenv fdt_addr_r 0x99000000 
    2 setenv xen_load 'tftp ${xen_addr_r} uXen';setenv xen_dtb 'tftp ${fdt_addr_r} u-boot.dtb;fdt addr  ${fdt_addr_r};fdt resize;'
    3 setenv xen_boot 'setenv bootargs ${bootargs_xen};bootm ${xen_addr_r} - ${fdt_addr_r}' 
    4 setenv dom0_node 'fdt set /chosen/module@0 compatible xen,linux-zimage xen,multiboot-module'
    5 setenv xen_dom0 'tftp ${kern_addr_r} Image; run dom0_node;fdt set /chosen/module@0 reg < 0x0 ${kern_addr_r} 0x${filesize} >'
    6 setenv xen_run 'run xen_dtb xen_dom0 xen_load;fdt print /chosen;run xen_boot'
    7 setenv bootargs_xen 'conswitch=x sync_console dom0_mem=1G dom0_max_vcpus=1 console=dtuart dtuart=/smb/motherboard/amba/uart@28001000'
    8 
    9 # setenv bootargs_xen 'conswitch=x sync_console dom0_mem=1G dom0_max_vcpus=1 console=dtuart dtuart=/smb/uart@28001000'

    编译gdbserver aarch64

     1 --------------------主机-----------------------------
     2 mkdir build.pc 
     3 cd build.pc
     4 ../configure --target=aarch64-linux-gnu
     5 
     6 make 
     7 ---------------------目标机--------------------------
     8 mkdir build.arm64 
     9 cd build.arm64
    10 ../configure --prefix=/home/trait/gnu-tools/install --target=aarch64-linux-gnu --host=aarch64-linux-gnu
    11 make CC=/home/trait/v8le/linaro-aarch64/bin/aarch64-linux-gnu-gcc

     

    转载于:https://www.cnblogs.com/danxi/p/6382631.html

    展开全文
  • 交叉验证和验证集不是一回

    千次阅读 2019-12-08 10:33:27
    之前一直不明白交叉验证的具体意思,以为带个验证俩字,跟验证集一定有啥关系,结果并没有!!! 最近做实验,由于数据集太小,只有40条数据,要用留一法交叉验证,翻遍了网上的帖子都说把数据分为K份(我这k=40),k-...

    关于训练集,验证集,测试集,交叉验证,留一法等,我专门整理了一篇文章(测试集可用作验证集;验证集绝对不能来自训练集!(交叉验证,留一法))把他们说明白,看了就会非常清楚啦。

    之前一直不明白交叉验证的具体意思,以为带个验证俩字,跟验证集一定有啥关系,结果并没有!!!

    最近做实验,由于数据集太小,只有40条数据,要用留一法交叉验证,翻遍了网上的帖子都说把数据分为K份(我这k=40),k-1份用于训练,剩余一份用于测试,大家都说的很清楚了,就是字面意思,我却一直还是迷迷糊糊,总觉得必须要和验证集(即训练集,验证集,测试集)扯上关系,然后想了半天,决定在39份数据里再分训练集和验证集,然后就总结了下面的经验

    总之,交叉验证和验证集没有半毛钱关系,数据分为K份后,用k-1份用于训练,train,训练好了拿剩余一份用于测试,test, 然后再轮流使用k份中的每一份作为测试,其他K-1份作为训练,并且需要注意的是!!!总共训练了K个子模型,然后拿到了k个测试结果,假设其中对了m个,则最终测试精度就是m/k*100%。不是一直训练一个模型,那样绝对过拟合!亲身经历总结出来的教训,因为你一直重复训练一个模型,k次后,这个模型绝对记住了(背下来了)答案,你的验证精度会变为100%。

    至于验证集,它的作用就只有一个,就是通过告诉你模型有没有过拟合,以指导你调整超参数,就只有这一个作用,但是对于小数据集,真的,没必要再分验证集,

    以我的case为例,总共40条数据,一条用于测试集,剩余39条,如果你选38条用于训练集,则验证集一条数据,验证精度要么0,要么1.0,不能告诉你任何模型欠拟和还是过拟合的信息,因为验证集数据太少的话,验证精度的波动就会特别大,这个很好理解,比如你验证集4条数据,那么一旦和上次的正确条数差1个,你的验证精度波动就高达25%,但是如果对于大数据集,验证集假设有1000条数据,一旦和上次的正确条数差1个,验证精度波动只有0.1%,很简单的一个道理,全是我用实验经历排的坑,思考总结出来的经验。之后可以放个图出来看看是什么景象

    从科学的角度分析,小数据集本身就不能代表真实数据的分布,它数据太少了,很难完美刻画真实分布,那训练集和验证集就更小了,更加不可能描绘数据的原始分布,也就不可能满足i.i.d,独立同分布的基本假设,所以你整个模型肯定学不好,所以对于小数据集,建议不要再分什么验证集了,没资本那么奢侈去进一步减少本来就不够的训练数据,训练数据越多越好,尽量刻画原来数据的真实分布

    展开全文
  • 点击上方蓝色字体,关注我们作者简介浩彬老撕,R语言中文社区特邀作者,好玩的IBM数据工程师,立志做数据科学界的段子手。个人公众号:探数寻理往期回顾:统计挖掘的一些一些情...
  • 但是 条件编译 和 交叉编译 完全是两回, 解决的问题也是不一样的。总结区分一下:交叉编译,解决的是目标程序问题, 是目的。条件编译,解决的是代码适配问题, 是过程。交叉编译交叉编译解决目标程序问题,即在一台...
  • 原标题:前交叉韧带断裂后这件千万不能做,教你三步正确处理前叉断裂今天要向大家介绍的这个案例,是一个典型的前交叉韧带急性断裂后采取错误处理方法的患者。患者进到诊室里来的时候,可以说是“全副武装”,架着...
  • 交叉编译nftables

    2020-07-26 05:46:20
    开启内核选项,交叉编译iptables,移植运行后才发现。我靠~不支持了,需要用新的nftables。奶奶的,我老了,被时代所淘汰了。nfatbles是个啥,就是取代iptables的。好吧,那就弄吧,弄起来才知道,麻烦啊,尤其是...
  • 首先说说交叉编译的:一个简单的Hello World程序,在x86_64的机器上编译通过后,将其生成的可执行程序拷贝到aarch64的机器上去执行,肯定是执行不通过的, 会报文件格式不正确之类的错误,这是因为程序的编译平台...
  • QT交叉编译arm

    2021-02-04 12:12:00
    文章目录QT环境以及交叉编译环境的搭建前言一、QT使用方面,先得知道QT是怎么回QT是什么和我认为的优势干货来了qmake编译器二、自己使用遇到的问题总结 前言 提示:整个项目是调用摄像头完成画面采集并且调用...
  • 我的用的是centos,在上面用交叉编译链编译一个软件。首先下载软件,解压,然后进入目录,执行./config 生成Makefile文件,将其中的编译器...这是怎么回?其中我已经用交叉编译链测试过我写的helloword程序,是可以的
  • 交叉编译不熟悉,一些后感觉很简单的问题事前烦恼了很久。源代码的编译大致可以分为三个类,用cmake的, 用make的, 用脚本的。用cmake的最好改,其次是用脚本的,一般文档写得全。用make的往往是很简陋的,没...
  • 10.05-CMake 交叉编译

    2019-07-01 22:29:00
    交叉编译不仅仅使用在嵌入式开发等情况,在所开发的软件只能依赖特定版本时,也是有用的,比如要求依赖libfcl-0.5以上版本。 CMake进行高端开发前言参考学习记录概述工具链文件设定系统设定编译选项寻找库...
  • 交叉编译gdbserver

    千次阅读 2016-10-09 15:09:07
    从官网下载最新的gdb代码 ...这才是正宗的, 那些git, googlesource, 镜像,...这么简单的为什么搞那么复杂呢?装xx? 历史? tar -xzvf gdb-7.11.tar.gz , 这才是正宗代码,包含gdb和gdbserver 1. 编译gdb cd gdb-7.11
  • 这个关于时频分析的交叉项抑制的综述,以交叉项抑制为主线,从一个全新的思路来整理,希望大家分享
  • 在Gentoo下交叉编译

    2015-01-15 12:36:35
    在Gentoo下交叉编译 “Sometimes it pays to stay in bed in Monday, rather than spending the rest of the week debugging Monday’s code.... ...好久没干过这么繁琐的 了,写篇日志分享一下
  • 在项目里交叉使用Swift和OC Swift与OC的兼容性使得你可以在项目里使用Swift+OC的方式编写应用程序,称为混合+匹配(mix and match),用这种方式可以一边使用享受新语言的快速特性,一边无缝的接合你已有的OC代码...
  •     ...Sam常使用各种不同的交叉编译器编译同一份程序。...一直搞不清是怎么回。现在学习之:   1. 如何查看交叉编译器信息: #gcc -v #arm-linux-gcc -v #mipsel-linux-gcc -v
  • 在目前嵌入式开发比较流行之时。交叉编译环境的搭建和熟悉是开发软件工程师必不可少的功课。在实际工作中,还是有很多人不知道交叉编译环境是怎么回。这里总结了一下个人经验。
  • R机器学习之交叉验证改善模型

    千次阅读 2015-11-27 18:57:34
    什么事交叉验证交叉验证就是保留一部分样本集不用于训练模型,而用于预测。交叉验证的方法 50%测试集,50%训练集 缺点:只用一半数据集训练有可能丢失有用信息,即高偏差 留一法 2.1使用所有数据点,具有较低偏差 ...
  • 立即学习:https://edu.csdn.net/course/play/798/10896?utm_source=blogtoedu 交叉编译: 可以用高性能机器为低性能极机器开发软件
  • 之前我在eclipse下搭建了交叉编译项目的环境,这次试试在Qt Creator下完成相同的事情。这件并不是没有任何意义,Qt Creator拥有更小的安装包和更快的运行速度,代码提示功能也比eclipse+CDT更加智能。 新建...
  • 这就意味着无人驾驶汽车要想学好通过交叉路口不是件容易的。要成功通过交叉路口,需要完成三件:1)理解汽车的动态行为,2)解读其他司机的意图,3)以可被预测的方式行动以便其他司机能够合适地响应。这需要在大量...
  • 因为我们是交叉编译所以缺少库是经常发生的。特别是编一些依赖比较多的库的时候,比如opencv等等 出现这个肯定是交叉编译环境里面没有相应的库。那么此时我们可以设置rpath 让程序先编译链接通过。 rpath是什么? ...
  • 搭建好了交叉编译环境后,第一件就是传说中的”Hello,World!”.一. 主机编译环节我使用的系统是ubuntu10.04,搭建好交叉编译环境后,终端输入arm-Linux-gcc -v能够正常显示版本信息,但是输入sudo a...
  • 3、当程序被停住时,可以检查这个时候程序中发生的 4、动态地改变程序的运行环境。 远程(交叉)GDB调试 调试桩(调试代理):在目标机上驻留有一小段代码。 调试桩作用: 1、在目标机上视线由主机上的调试器发送...
  • 今天在测试卷积训练程序的时候偶遇到这样的一个错误: 通过执行的细节我可以发现运行卡在了get_loss这个函数里,而关键在于y 与 y_的张量维度不一致导致的...我在网上搜索了一番后发现是交叉熵函数的使用有问题 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 511
精华内容 204
关键字:

交叉事