[求助] fc12交叉编译工具的库路径求助!!!!

fwjieok   2014-8-14 17:15 楼主
求救 老大:


  我用的官网提供的建立好的fc12开发环境,现在在移植freetype,我把编译好的freetype头文件和库文件要安装到哪个目录呢,试了两个小时了,也没试对,fc12自带的交叉编译目录好乱啊,我把头文件放对路径了,现在freetype的库文件试了n个目录,编译程序时都提示找不到库文件,请问,我该把第三方软件的库放哪个目录来编译应用程序,后面还会弄libjpeg,还有tslib,还有其它的第三方开源软件,急啊,唉,浪费了几个小时了。

回复评论 (10)

可能存放第三方.so的路径都试过了,还是不行啊!
点赞  2014-8-14 17:20
编译器里已经包含了libjpeg,libpng,libts等常用的开源库。编译器里库的存放位置是:/opt/toolchains/arm-jyxtec-linux-gnueabi/arm-jyxtec-linux-gnueabi/sysroot/lib 这个是默认位置,怎么会乱呢? libfreetype我们没有放进去,你要把.so,还有.la,.a等文件都要放进去,还要把相应的头文件也要放进去才行。 其实,放不放在里边都没关系的,编译代码的时候,加一个CFLAGS=+L,L后边跟一个你编译好的库路径就行了。 本帖最后由 spacexplorer 于 2014-8-14 18:15 编辑
My dreams will go on... http://www.jyxtec.com
点赞  2014-8-14 18:12
引用: spacexplorer 发表于 2014-8-14 18:12 编译器里已经包含了libjpeg,libpng,libts等常用的开源库。编译器里库的存放位置是:/opt/toolchains/arm- ...
已解决,谢老大,基于Helper2416的电子书项目已完成,稍后贴出,接下来是数码相框,MP3播放器,,现在有个问题: 编写触摸屏应用程序时,执行编好的程序时出现下面提示: XXXXX(省略若干行。。。。) tslib: Selected device is not a touchscreen (must support ABS and KEY event types) 我在网上查看说是: 内核和文件系统编译时加入触摸屏支持,是这样的吗? 我make menuconfig查看发现在内核配置中,这一项如下 : 【*】Touchscreens ---> 前面是*号,这样应该是编译进内核了吧,我进入子止录发现没有一项选 中,唉不知 是不是这个问题,请老大回答一下,我的应用程序代码打开触摸屏部分在下面。 同样的应用程序我在我的另一块i.mx283上执行正常,但是到Helper416上就不行了,tslib环境变量是配套的,我的另一块板是i.mx283。触摸屏设备是/dev/input/ts0,在Helper2416上应该 是/dev/input/event0。
  1. #include <tslib.h>
  2. struct tsdev *ts; // 定义一个TS设备
  3. int touchscreen_open() // 打开TS
  4. {
  5. char *tsdevice = NULL;
  6. ts = ts_open("/dev/input/event0", 0); // 0表示阻塞读取
  7. if (!ts)
  8. {
  9. printf("ts_open error \n");
  10. exit(1);
  11. }
  12. if (ts_config(ts))
  13. {
  14. printf("ts_config error \n");
  15. exit(1);
  16. }
  17. }
  1. while(1)
  2. {
  3. res = ts_read(ts, &tSamp,1 ); // 阻塞读取
  4. if(res < 0)
  5. {
  6. break;
  7. }
  8. if(tSamp.pressure > 0)
  9. {
  10. if(flag)
  11. lcd_draw_line(x,y,tSamp.x,tSamp.y,RED);
  12. x = tSamp.x;
  13. y = tSamp.y;
  14. flag = 1;
  15. }
  16. else
  17. {
  18. flag = 0;
  19. }
  20. //printf("x = %d y = %d\n",tSamp.x,tSamp.y);
  21. }
本帖最后由 fwjieok 于 2014-8-15 17:25 编辑
点赞  2014-8-15 17:22
引用: fwjieok 发表于 2014-8-15 17:22
已解决,谢老大,基于Helper2416的电子书项目已完成,稍后贴出,接下来是数码相框,MP3播放器,,现在有 ...

补充个问题,Helper2416的内存起始地址到底是多少? 0XC000 0000   ?   我烧写UBOOT和zImage时都没有坏块,烧写文件系统时,坏块太多了,吓我一跳,不知是不是地址给弄错了,我是按手山上给出的地址来的。。。。。
点赞  2014-8-15 17:28
感动了!想当年我们成立君益兴就是为了做电子项目的!你是高手! 如果用我们的文件系统,你可以看一下/qtenv或者/bin/qtopia里的配置,对应的 event设备可能是event1,或者你看一下每个event设备里的name,就能找到对应的touchdev。 HELPER2416的启努内存是0x30000000,在UBOOT里,有映射到0xC0000000,烧写文件系统有坏块,可能是因为你制作文件系统镜像有问题,一定要用我提供的制作工具来制作,还有,要在uboot里烧,在用户态烧可能有问题,这个我不确定。 本帖最后由 spacexplorer 于 2014-8-15 20:42 编辑
My dreams will go on... http://www.jyxtec.com
点赞  2014-8-15 20:40
OK,非常感谢,查看/qtenv得知是event1,另外,tslib的配置文件ts.conf 把它从/usr/local/etc/下面  移到了/etc/目录下,这样用我以前的环境变量设备就OK了,现在电子书支持触屏翻页和终端输入控制,明天拍个视频,也展示下这两周来的学习成果,还有几个疑问:

1. tslib库使用的那些环境变量可以放在开机自动启动的配置文件中吗?应该是哪个文件?
2. uboot映射 内存的原理,,,,,可以提供些关键字资料吗,我查看一下,这个不是太懂,,,我说怎么看资料地址是30000000,而手册上说是c0000000。
3. 我从nand启动时,uboot启动后,就是大块大块的坏块打印信息,大约打印了5秒,,,,,,然后才出现解压内核的打印信息,最终进入文件系统,难道我的板子坏块这么多???不应该啊,擦写次数不是10万次吗,我也没擦写几次,这么坏块。。。。。
点赞  2014-8-16 00:10
再补充个问题,Helper2416各个外设的驱动源码在哪里呢?我要在应用程序中读入按键功能,要不我就自已写个按键的驱动吧,,,
点赞  2014-8-16 00:17
1、tslib的配置信息和正要启动的程序文件放在同一个脚本里,放在你正在启动的程序文件之前就行。只有放在被执行文件之前才能生效,当然,你也可以单独做一个脚本,在执行自启动程序里,先source一下这个脚本就行,注意:一定是source,而不是./;
2、UBOOT里的映射没什么原因,纯粹是程序设计成这样的,主要的原理还是要看MMU,地址是通过MMU映射的;
3、如果发现了大量的坏块,则有可能是写数据的时候操作出错了,你可以用
    nand scrub  [offset]  [size]
    来清掉不正确的坏块信息,操作方法与nand erase一样,只是会清除坏块信息
4、外设驱动源码比较多,一般在driver下边,还有一些在arch/arm/下边,这下边有三个目录:mach-s3c2416,plat-s3c24xx,plat-samsung,按键驱动在:drivers/input/keyboard/helper2416_keys.c

My dreams will go on... http://www.jyxtec.com
点赞  2014-8-16 11:19
引用: spacexplorer 发表于 2014-8-16 11:19
1、tslib的配置信息和正要启动的程序文件放在同一个脚本里,放在你正在启动的程序文件之前就行。只有放在被 ...

非常感谢,现在我已弄懂了helper2416的按键,就是/dev/input/event0嘛,我能正确读出来按键的值啦 ,但是我看代码发现,你是弄了个内核线程来查询按键的IO口状态,如果状态改变,就报告给Input子系统,那我现在有个疑问,是这样的:

  我使用轮询读取的方法,每隔500ms读取一次触摸屏或串口终端,这样的话,我一直按着触摸屏,那它就达到了连按的效果,电子书会不停的翻页,现在的按键却不是这样,如果我一直按着按键不丢,则只会检测到一次按下,而达不到连续按的效果,老大应该明白我的意思了,,,,吧,说的不清,晚上拍张图和视频上传演示,,,原因是不是因为驱动程序只在按键的状态变化时才会上报事件,而如果按着不丢,驱动没有检测到按键IO口的状态变化,所以不会上报事件啊,也就是说,驱动程序只检测到一次按键,只上报一次,所以在应用程序中也只读取到一次按键按下。。。。???


求老大解释,,,,,,。

还有个问题,我尝试着编译内核 ,按手册上来的,是3.2的,编译过程中出现了好多选择项,你必须输入回册才能继续编译,这是为何?
点赞  2014-8-16 13:32
引用: fwjieok 发表于 2014-8-16 13:32 非常感谢,现在我已弄懂了helper2416的按键,就是/dev/input/event0嘛,我能正确读出来按键的值啦 ,但是 ...
一般说来,程序有一个机制,就是上报连续按键,我不知道应该放在内核里还是应该放在应用程序里。我目前做的就是反回按下,或者弹起的状态,没有做连续按键。 编译的时候,直接用 .config好了,不要再用helper2416这个配置文件了,还有命令行是这样的: make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig 不是单纯的: make menuconfig 本帖最后由 spacexplorer 于 2014-8-16 15:05 编辑
My dreams will go on... http://www.jyxtec.com
点赞  2014-8-16 15:03
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复