The document discusses cross-compiling native packages for Android using autotools or cmake. It describes downloading and configuring the Android NDK, which provides cross-compilation tools for ARM, x86, and MIPS architectures. It then gives steps to cross-compile the expat library as an example, including downloading the sources, extracting them, and configuring/building using the autotools system. Key points covered include limitations of the Bionic C library used on Android and associations between Android API levels and supported architectures.
[KubeConEU] Building images efficiently and securely on Kubernetes with BuildKitAkihiro Suda
https://sched.co/MPX5
BuildKit is a modern container image builder that focuses on efficiency and security, mostly known as the backend of Docker 18.06+ and Jessie Frazelle's `img`. (But it is even useful as a standalone tool!)
In this talk, Akihiro Suda, one of founding maintainers of BuildKit, shows practical tips for running BuildKit on Kubernetes clusters.
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...corehard_by
Использование сторонних библиотек в языке C++ никогда не было простым - необходимо было правильно собрать их, имея дело с различными системами сборки, но с появлением пакетного менеджера conan.io процесс стал намного проще, так что теперь осталось только сделать пакеты для нужным библиотек, и в этом поможет команда bincrafter-ов.
P2P Container Image Distribution on IPFS With containerd and nerdctlKohei Tokunaga
Talked at FOSDEM 2022 about IPFS-based P2P image distribution with containerd and nerdctl (Feburary 6, 2022).
https://fosdem.org/2022/schedule/event/container_ipfs_image/
nerdctl is a Docker-compatible CLI of containerd, developed as a subproject of containerd. nerdctl recently added support of P2P image distribution on IPFS. This enables to share container images among hosts without hosting or relying on the registry.
In this session, Kohei, one of the maintainers of nerdctl, will introduce IPFS-based P2P image distribution with containerd and nerdctl. This session will also show the combination of IPFS-based distribution with the existing image distribution techniques, focusing on lazy pulling (eStargz) and image encryption (OCIcrypt). The status of integration work with other tools including Kubernetes will also be shared.
Related blog post: "P2P Container Image Distribution on IPFS With Containerd" . https://medium.com/nttlabs/nerdctl-ipfs-975569520e3d
Faster Container Image Distribution on a Variety of Tools with Lazy PullingKohei Tokunaga
Talked at KubeCon + CloudNativeCon North America 2021 Virtual about lazy pulling of container images with eStargz and nydus (October 14, 2021).
https://kccncna2021.sched.com/event/lV2a
CloudNative Days Spring 2021 ONLINE キーノートでの発表資料です。
https://event.cloudnativedays.jp/cndo2021/talks/1071
本セッションでは、DockerとKubernetesのもつ基本的な機能の概要を、コンテナの仕組みをふまえつつイラストを用いて紹介していきます。一般にあまり焦点をあてて取り上げられることは多くありませんが、コンテナの作成や管理を担う低レベルなソフトウェア「コンテナランタイム」も本セッションの中心的なトピックのひとつです。
本セッションは、拙著「イラストで分かるDockerとKubernetes」(技術評論社)の内容を参考にしています。
https://www.amazon.co.jp/dp/4297118378
[KubeConEU] Building images efficiently and securely on Kubernetes with BuildKitAkihiro Suda
https://sched.co/MPX5
BuildKit is a modern container image builder that focuses on efficiency and security, mostly known as the backend of Docker 18.06+ and Jessie Frazelle's `img`. (But it is even useful as a standalone tool!)
In this talk, Akihiro Suda, one of founding maintainers of BuildKit, shows practical tips for running BuildKit on Kubernetes clusters.
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...corehard_by
Использование сторонних библиотек в языке C++ никогда не было простым - необходимо было правильно собрать их, имея дело с различными системами сборки, но с появлением пакетного менеджера conan.io процесс стал намного проще, так что теперь осталось только сделать пакеты для нужным библиотек, и в этом поможет команда bincrafter-ов.
P2P Container Image Distribution on IPFS With containerd and nerdctlKohei Tokunaga
Talked at FOSDEM 2022 about IPFS-based P2P image distribution with containerd and nerdctl (Feburary 6, 2022).
https://fosdem.org/2022/schedule/event/container_ipfs_image/
nerdctl is a Docker-compatible CLI of containerd, developed as a subproject of containerd. nerdctl recently added support of P2P image distribution on IPFS. This enables to share container images among hosts without hosting or relying on the registry.
In this session, Kohei, one of the maintainers of nerdctl, will introduce IPFS-based P2P image distribution with containerd and nerdctl. This session will also show the combination of IPFS-based distribution with the existing image distribution techniques, focusing on lazy pulling (eStargz) and image encryption (OCIcrypt). The status of integration work with other tools including Kubernetes will also be shared.
Related blog post: "P2P Container Image Distribution on IPFS With Containerd" . https://medium.com/nttlabs/nerdctl-ipfs-975569520e3d
Faster Container Image Distribution on a Variety of Tools with Lazy PullingKohei Tokunaga
Talked at KubeCon + CloudNativeCon North America 2021 Virtual about lazy pulling of container images with eStargz and nydus (October 14, 2021).
https://kccncna2021.sched.com/event/lV2a
CloudNative Days Spring 2021 ONLINE キーノートでの発表資料です。
https://event.cloudnativedays.jp/cndo2021/talks/1071
本セッションでは、DockerとKubernetesのもつ基本的な機能の概要を、コンテナの仕組みをふまえつつイラストを用いて紹介していきます。一般にあまり焦点をあてて取り上げられることは多くありませんが、コンテナの作成や管理を担う低レベルなソフトウェア「コンテナランタイム」も本セッションの中心的なトピックのひとつです。
本セッションは、拙著「イラストで分かるDockerとKubernetes」(技術評論社)の内容を参考にしています。
https://www.amazon.co.jp/dp/4297118378
Kernel Recipes 2016 - Upstream Kernel Graphics is (Finally) WinningAnne Nicolas
About 5 years ago I was at a big conference on the topic of what’s needed for upstream graphics. I spent a lot of time apologizing for and ranting about the various horror shows in the DRM graphics subsystems. And eventually some engineer from a hardware vendor asked:
“If this all such crap, why should we bother with upstream graphics?“
Now I can finally and honestly answer this, because upstream supports everything, has helpers for all possible and impossible display standards, is supported by ever Linux-based OS out there and every vendor has a driver. In this talk I will present about how we got there, and especially what’s been going on recently.
Daniel Vetter
Startup Containers in Lightning Speed with Lazy Image DistributionKohei Tokunaga
Talked about lazy container image distribution technologies including containerd + Stargz Snapshotter ( https://github.com/containerd/stargz-snapshotter ) at KubeCon+CloudNativeCon Europe 2020 Virtual.
This talk gives a brief introduction to OpenStack and Chef, then outlines the current state of deploying OpenStack with Chef. There was a live demo deploying to a Dell rack during the talk.
SCALE 9x, February 25-27 in Los Angeles.
CloudNative Days Tokyo 2020での、lazypullに関する発表資料です。https://event.cloudnativedays.jp/cndt2020/talks/16
Stargz Snapshotterのリポジトリ:
https://github.com/containerd/stargz-snapshotter
Embedded Recipes 2019 - Testing firmware the devops wayAnne Nicolas
ITRenew is selling recertified OCP servers under the Sesame brand, those servers come either with their original UEFI BIOS or with LinuxBoot. The LinuxBoot project is pushing the Linux kernel inside bios flash and using userland programs as bootloader.
To achieve quality on our software stack, as any project, we need to test it. Traditional BIOS are tested by hand, this is 2019 we need to do it automatically! We already presented the hardware setup behind the LinuxBoot CI, this talk will focus on the software.
We use u-root for our userland bootloader; this software is written in Go so we naturally choose to use Go for our testing too. We will present how we are using and extending the Go native test framework `go test` for testing embedded systems (serial console) and improving the report format for integration to a CI.
Julien Viard de Galbert
[KubeCon NA 2020] containerd: Rootless Containers 2020Akihiro Suda
Rootless Containers means running the container runtimes (e.g. runc, containerd, and kubelet) as well as the containers without the host root privileges. The most significant advantage of Rootless Containers is that it can mitigate potential container-breakout vulnerability of the runtimes, but it is also useful for isolating multi-user environments on HPC hosts. This talk will contain the introduction to rootless containers and deep-dive topics about the recent updates such as Seccomp User Notification. The main focus will be on containerd (CNCF Graduated Project) and its consumer projects including Kubernetes and Docker/Moby, but topics about other runtimes will be discussed as well.
https://sched.co/fGWc
Kernel Recipes 2016 - Landlock LSM: Unprivileged sandboxingAnne Nicolas
Linux has multiple access-control features, which help to contain the damage from a malicious process. However, it is difficult and complex, especially for unprivileged users, to create a sandboxed application because of the currently administrator-oriented security.
seccomp-bpf was a big step forward in empowering any user with the ability to filter syscalls and therefore limit access to some resources. Nevertheless, it lacks the ability to create a full standalone sandbox (e.g. restrict access to a set of files), unlike Seatbelt/XNU Sandbox or OpenBSD Pledge.
In this talk, we present Landlock, a new Linux Security Module for unprivileged users. This brings some interesting challenges, from architecture design to userland API definition.
Mickaël Salaün
Comparing Next-Generation Container Image Building ToolsAkihiro Suda
http://sched.co/EaYe
Until recently, running `docker build` against Dockerfile had been the only way to build container images.
However, lots of opensource software are being proposed as successors/alternatives to `docker build`:
- BuildKit (Moby Project / Docker)
- img (Jessica Frazelle / Microsoft)
- Buildah (Project Atomic / Red Hat)
- umoci & Orca (SUSE)
- Bazel (Google)
- OpenShift S2I (Red Hat)
Akihiro Suda compares these new tools' advantages and disadvantages.
His evaluation basis would include but not be limited to:
- Performance (Cache efficiency, Concurrency, Distributed Execution)
- Secret management, e.g. SSH and AWS keys
- Support for non-Dockerfile
- Non-root execution
- UI & UX
- Governance of the community
He also proposes a unified interface for using these tools with Kubernetes in a vendor-neutral way.
Build and Run Containers With Lazy Pulling - Adoption status of containerd St...Kohei Tokunaga
Talked about lazy pulling of container images with eStargz and Stargz Snapshotter at FOSDEM 2021.
Details: https://fosdem.org/2021/schedule/event/containers_lazy_pull/
Stargz Snapshotter: https://github.com/containerd/stargz-snapshotter
Slides form talk at FI MUNI about development in C (2012). Covers topic about C libraries including libuv library from Node.js and its relation to Google V8 JavaScript Engine.
Kernel Recipes 2016 - Upstream Kernel Graphics is (Finally) WinningAnne Nicolas
About 5 years ago I was at a big conference on the topic of what’s needed for upstream graphics. I spent a lot of time apologizing for and ranting about the various horror shows in the DRM graphics subsystems. And eventually some engineer from a hardware vendor asked:
“If this all such crap, why should we bother with upstream graphics?“
Now I can finally and honestly answer this, because upstream supports everything, has helpers for all possible and impossible display standards, is supported by ever Linux-based OS out there and every vendor has a driver. In this talk I will present about how we got there, and especially what’s been going on recently.
Daniel Vetter
Startup Containers in Lightning Speed with Lazy Image DistributionKohei Tokunaga
Talked about lazy container image distribution technologies including containerd + Stargz Snapshotter ( https://github.com/containerd/stargz-snapshotter ) at KubeCon+CloudNativeCon Europe 2020 Virtual.
This talk gives a brief introduction to OpenStack and Chef, then outlines the current state of deploying OpenStack with Chef. There was a live demo deploying to a Dell rack during the talk.
SCALE 9x, February 25-27 in Los Angeles.
CloudNative Days Tokyo 2020での、lazypullに関する発表資料です。https://event.cloudnativedays.jp/cndt2020/talks/16
Stargz Snapshotterのリポジトリ:
https://github.com/containerd/stargz-snapshotter
Embedded Recipes 2019 - Testing firmware the devops wayAnne Nicolas
ITRenew is selling recertified OCP servers under the Sesame brand, those servers come either with their original UEFI BIOS or with LinuxBoot. The LinuxBoot project is pushing the Linux kernel inside bios flash and using userland programs as bootloader.
To achieve quality on our software stack, as any project, we need to test it. Traditional BIOS are tested by hand, this is 2019 we need to do it automatically! We already presented the hardware setup behind the LinuxBoot CI, this talk will focus on the software.
We use u-root for our userland bootloader; this software is written in Go so we naturally choose to use Go for our testing too. We will present how we are using and extending the Go native test framework `go test` for testing embedded systems (serial console) and improving the report format for integration to a CI.
Julien Viard de Galbert
[KubeCon NA 2020] containerd: Rootless Containers 2020Akihiro Suda
Rootless Containers means running the container runtimes (e.g. runc, containerd, and kubelet) as well as the containers without the host root privileges. The most significant advantage of Rootless Containers is that it can mitigate potential container-breakout vulnerability of the runtimes, but it is also useful for isolating multi-user environments on HPC hosts. This talk will contain the introduction to rootless containers and deep-dive topics about the recent updates such as Seccomp User Notification. The main focus will be on containerd (CNCF Graduated Project) and its consumer projects including Kubernetes and Docker/Moby, but topics about other runtimes will be discussed as well.
https://sched.co/fGWc
Kernel Recipes 2016 - Landlock LSM: Unprivileged sandboxingAnne Nicolas
Linux has multiple access-control features, which help to contain the damage from a malicious process. However, it is difficult and complex, especially for unprivileged users, to create a sandboxed application because of the currently administrator-oriented security.
seccomp-bpf was a big step forward in empowering any user with the ability to filter syscalls and therefore limit access to some resources. Nevertheless, it lacks the ability to create a full standalone sandbox (e.g. restrict access to a set of files), unlike Seatbelt/XNU Sandbox or OpenBSD Pledge.
In this talk, we present Landlock, a new Linux Security Module for unprivileged users. This brings some interesting challenges, from architecture design to userland API definition.
Mickaël Salaün
Comparing Next-Generation Container Image Building ToolsAkihiro Suda
http://sched.co/EaYe
Until recently, running `docker build` against Dockerfile had been the only way to build container images.
However, lots of opensource software are being proposed as successors/alternatives to `docker build`:
- BuildKit (Moby Project / Docker)
- img (Jessica Frazelle / Microsoft)
- Buildah (Project Atomic / Red Hat)
- umoci & Orca (SUSE)
- Bazel (Google)
- OpenShift S2I (Red Hat)
Akihiro Suda compares these new tools' advantages and disadvantages.
His evaluation basis would include but not be limited to:
- Performance (Cache efficiency, Concurrency, Distributed Execution)
- Secret management, e.g. SSH and AWS keys
- Support for non-Dockerfile
- Non-root execution
- UI & UX
- Governance of the community
He also proposes a unified interface for using these tools with Kubernetes in a vendor-neutral way.
Build and Run Containers With Lazy Pulling - Adoption status of containerd St...Kohei Tokunaga
Talked about lazy pulling of container images with eStargz and Stargz Snapshotter at FOSDEM 2021.
Details: https://fosdem.org/2021/schedule/event/containers_lazy_pull/
Stargz Snapshotter: https://github.com/containerd/stargz-snapshotter
Slides form talk at FI MUNI about development in C (2012). Covers topic about C libraries including libuv library from Node.js and its relation to Google V8 JavaScript Engine.
Presentación en PowerPoint sobre los distintos tipos de animales: domésticos, de la granja, del bosque... Está en francés para enseñar a niños de Primaria.
First Steps Developing Embedded Applications using Heterogeneous Multi-core P...Toradex
Read our blog for the latest on demystifying the development of embedded systems using Heterogeneous Multicore Processing architecture powered SoCs! This might provide you with the jump start you need for your development. https://www.toradex.com/blog/first-steps-developing-embedded-applications-using-heterogeneous-multicore-processors
In this talk, Phil and Michael will talk about how Docker was extended from x86 Linux to Windows, ARM and IBM’s z Systems mainframe and Power platforms. They will cover the work and architecture that makes it possible to run Docker on different CPU architectures and operating systems; How porting Docker to a new OS is different from porting it to new hardware; What it means for a Docker image to be multi-arch (and how are multi-arch images built and maintained); How does Docker correctly deploy and schedule apps on heterogeneous swarms.
Phil and Michael will also demo some of the new features that let Docker Enterprise Edition manage swarms with both x86 Linux and Windows nodes as well as mainframes.
Custom CI/CD pipelines often don’t adapt well to existing platforms. OCluster is a cluster management system that’s currently deployed on thousands of cores powering various CI systems for the OCaml community. It composes recognized software components, from snapshotting filesystems to containers and virtualization management, in order to provide a lightweight and highly portable execution environment across operating systems and architectures. In this talk, we’ll present OCluster use cases, and how it fits into the OCurrent framework.
http://fr.droidcon.com/2014/agenda/
http://fr.droidcon.com/2014/agenda/detail?title=The+Android+Native+Development+Kit
The Android NDK is used to integrate C/C++ code into Android applications and libraries.
Learn how you can use the NDK and NDK-based libraries with Eclipse and Android Studio, and how you can debug and optimize your code.
Discover what changes from the new Android Runtime may break your integration, and how you can target new 64-bit architectures with the upcoming android L-release.
Speaker : Alexander Weggerle, Intel
Remix of two other open source presentations along with my own content, 40 slides set to play at 20 seconds auto-timed (similar to Pecha-Kucha style timing). This was delivered via Caribbean Tech Dev forum's monthly Google Hangout in November 2015, and video can be viewed at https://www.youtube.com/watch?v=xANrsSin_-0
Using open source software to build an industrial grade embedded linux platfo...SZ Lin
Building an embedded Linux platform is like a puzzle; placing the suitable software components in the right positions will constitute an optimal platform. However, selecting suitable components is difficult since it depends on different application scenarios. The essential components of an embedded Linux platform include the bootloader, Linux kernel, toolchain, root filesystem; it also needs the tools for image generation, upgrades, and testing. There are abundant resources in the Linux ecosystem with these components and tools; however, selecting the suitable modules and tools is still a key challenge for system designers.
Dev opsec dockerimage_patch_n_lifecyclemanagement_2019kanedafromparis
Lors de cette présentation, nous allons dans un premier temps rappeler la spécificité de docker par rapport à une VM (PID, cgroups, etc) parler du système de layer et de la différence entre images et instances puis nous présenterons succinctement kubernetes.
Ensuite, nous présenterons un processus « standard » de propagation d’une version CI/CD (développement, préproduction, production) à travers les tags docker.
Enfin, nous parlerons des différents composants constituant une application docker (base-image, tooling, librairie, code).
Une fois cette introduction réalisée, nous parlerons du cycle de vie d’une application à travers ses phases de développement, BAU pour mettre en avant que les failles de sécurité en période de développement sont rapidement corrigées par de nouvelles releases, mais pas nécessairement en BAU où les releases sont plus rares. Nous parlerons des diverses solutions (jfrog Xray, clair, …) pour le suivie des automatique des CVE et l’automatisation des mises à jour. Enfin, nous ferons un bref retour d’expérience pour parler des difficultés rencontrées et des propositions d’organisation mises en oeuvre.
Cette présentation bien qu’illustrée par des implémentations techniques et très organisationnel
Overview of Android NDK (Native Development Toolkit).
Android application development is primarily done with the Android SDK.
Apps are written in Java thus benefitting from the high-level constructs
of the managed environment as well as the wealth of functionality provided
by the Android application platform.
However, sometimes it is necessary to implement certain functionality natively
in C++, e.g. when access to hardware is required or 3rd party stacks have to
be included that are only available as C++ code.
The NDK is a lightweight development toolkit for writing native applications
and libraries that can interwork with Java application code.
Docker is in all the news and this talk presents you the technology and shows you how to leverage it to build your applications according to the 12 factor application model.
Accelerate your software development with DockerAndrey Hristov
Docker is in all the news and this talk presents you the technology and shows you how to leverage it to build your applications according to the 12 factor application model.
History and Basics of containers, LXC, Docker and Kubernetes. This presentation is given to Engineering colleage students at VIT DevFest 2018. Beginner to Intermediate level.
Similar to Cross-compilation native sous android (20)
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Cross-compilation native sous android
1. Cross-compilation native pour
android avec les autotools ou
cmake
Thierry GAYET
http://www.nextinnovation.org
Lorsque l'on cross-compile un package pour une architecture
donnée, ils peuvent être basés soit sur autotools, cmake, ou autre.
Cela peut être plus ou moins compliqué suivant le système de
génération requis.
1. Introduction au NDK de google Android
Le NDK (aka Native Development Kit) est un ensemble d'outils comprenant une chaîne de crosscompilation pour plusieurs architectures (ARM, X86, MIPS). Il permet de cross-compiler
nativement des packages développés en langage C et/ou C++.
Il est mis en libre téléchargement par google. Nous allons le télécharger et nous en servir pour les
cross-compilation suivantes.
Il est disponibles pour linux pour l'architecture x86 32 et 64 bits :
•
http://dl.google.com/android/ndk/android-ndk-r9c-linux-x86.tar.bz2
•
http://dl.google.com/android/ndk/android-ndk-r9c-linux-x86_64.tar.bz2
Le support c++ pour la STL est aussi disponible avec les symboles de débug :
•
http://dl.google.com/android/ndk/android-ndk-r9c-cxx-stl-libs-with-debugging-info.zip
L'installation sera effectué dans le répertoire /opt pour l'exemple :
$ cd /tmp
$ wget http://dl.google.com/android/ndk/android-ndk-r9c-linux-x86_64.tar.bz2
$ tar jxf android-ndk-r9c-linux-x86_64.tar.bz2
$ sudo $ tar jxf android-ndk-r9c-linux-x86_64.tar.bz2 -C /opt
Le NDK fournit une chaînes de compilation croisée (compilateurs, éditeurs de liens, etc...) pouvant
générer des binaires pour une architecture native.
Sont fournit les d'en-têtes du système pour API natives stables qui sont garantis pour être pris en
charge dans toutes les versions de la plate-forme :
•
headers libc bionic ;
•
headers libm (bibliothèque de mathématiques) ;
•
headers pour les interface JNI avec le java ;
•
headers libz (bibliothèque de compression Zlib) ;
•
headers liblog (bibliothèque de traces) ;
•
headers OpenGL ES 1.1 et OpenGL ES 2.0 (bibliothèques graphiques 3D) ;
•
headers libjnigraphics (accès au buffer de pixel) à partir d'Android 2.2 et supérieur ;
•
Un ensemble minimal d'entêtes pour le support du langage C et C++ ;
•
headers OpenSL ES (bibliothèques audio natives) ;
2. API Android natives ;
•
Le NDK, peut nécessité plusieurs dépendances :
•
SDK Android (>= 1.5) complet avec ses dépendances ;
•
Linux (32 or 64-bit ; Ubuntu 8.04, ou autre distribution Linux GLibc 2.7 ou supérieur) ;
•
GNU Make 3.81 ou supérieur ;
•
GNU Awk or Nawk ou supérieur
Une fois installé, l'arborescence suivante peut être observée :
Répertoire
Description
<ndk>/build
Outils nécessaires aux builds
<ndk>/docs
Documentation sur la partie native
<ndk>/platforms
Répertoire plate-forme Android par niveau d'API
<ndk>/prebuilt
Librairie(s) statiques et dynamique pré-ébuildées
<ndk>/samples
Exemple de code c/c++ natif
<ndk>/sources
Divers codes sources
<ndk>/tests
Tests unitaires du NDK
<ndk>/toolchains
Chaînes de cross-compilation
Pour ceux que cela intéresse, le NDK peut être suivi depuis les repo GIT officiel :
git clone https://android.googlesource.com/platform/ndk.git ndk
git clone https://android.googlesource.com/platform/development.git development
2. Configuration de l'environement
La décompression effectuée, nous pouvons définir le chemin du NDK dans notre fichier ~/.bashrc.
Pour ce faire ajoutons la ligne suivante :
export NDK_HOME="${FORMATION_HOME}/tools/android-ndk-r9c"
Pour une utilisation dans un shell il faudra resourcer le script :
$ source ~/.bashrc
Pour une utilisation directe en standalone de la toolchaine, il faut d'abord procéder à son
investigation.
Commençons par les différentes toolchain fournis dans le NDK :
$ ls -al ${NDK_HOME}/toolchains/
total 52
drwxr-xr-x 13 124982 5000 4096 déc. 4 05:09 .
drwxr-xr-x 10 124982 5000 4096 déc. 4 05:09 ..
drwxr-xr-x 3 124982 5000 4096 déc. 4 05:09 arm-linux-androideabi-4.6
drwxr-xr-x 3 124982 5000 4096 déc. 4 05:09 arm-linux-androideabi-4.8
drwxr-xr-x 2 124982 5000 4096 déc. 4 05:08 arm-linux-androideabi-clang3.3
drwxr-xr-x 3 124982 5000 4096 déc. 4 05:09 llvm-3.3
drwxr-xr-x 3 124982 5000 4096 déc. 4 05:09 mipsel-linux-android-4.6
drwxr-xr-x 3 124982 5000 4096 déc. 4 05:09 mipsel-linux-android-4.8
drwxr-xr-x 2 124982 5000 4096 déc. 4 05:08 mipsel-linux-android-clang3.3
drwxr-xr-x 3 124982 5000 4096 déc. 4 05:09 renderscript
3. drwxr-xr-x 3 124982 5000 4096 déc. 4 05:09 x86-4.6
drwxr-xr-x 3 124982 5000 4096 déc. 4 05:09 x86-4.8
drwxr-xr-x 2 124982 5000 4096 déc. 4 05:08 x86-clang3.3
Pour connaître les architectures cibles et hôte, consultons le répertoire prebuilt :
$ ls -al ${NDK_HOME}/prebuilt/
drwxr-xr-x 3 tgayet tgayet 4096 juil. 11 20:00 android-arm
drwxr-xr-x 3 tgayet tgayet 4096 juil. 11 20:00 android-mips
drwxr-xr-x 3 tgayet tgayet 4096 juil. 11 20:00 android-x86
drwxr-xr-x 4 tgayet tgayet 4096 juil. 11 20:00 common
drwxr-xr-x 6 tgayet tgayet 4096 juil. 10 21:55 linux-x86_64 (ou linux_x86 sur x86-32)
→ Android-* donne les architectures cibles : arm, mips ou x86.
→ linux-x86_64 donne l'architecture hôte de la machine servant aux développement.
Pour le support d'API android consultons le répertoire platforms :
$ ls -al ${NDK_HOME}/platforms/
drwxr-xr-x 5 tgayet tgayet 4096 juil. 11 04:36 android-14
drwxr-xr-x 5 tgayet tgayet 4096 juil. 11 04:36 android-18
drwxr-xr-x 3 tgayet tgayet 4096 juil. 11 04:36 android-3
drwxr-xr-x 3 tgayet tgayet 4096 juil. 11 04:36 android-4
drwxr-xr-x 3 tgayet tgayet 4096 juil. 11 04:36 android-5
drwxr-xr-x 3 tgayet tgayet 4096 juil. 11 04:36 android-8
drwxr-xr-x 5 tgayet tgayet 4096 juil. 11 04:36 android-9
→ android* donne la version d'API d'Android supporté.
La toolchain peut être utilisée séparément en exportant les outils nécessaires :
SYSROOT="${NDK_HOME}/platforms/android-<level>/arch-<arch>/"
CC="${NDK_HOME}/toolchains/<name>/prebuilt/<system>/bin/<prefix>gcc
--sysroot=$SYSROOT"
Exemple :
$ export SYSROOT="${NDK_HOME}/platforms/android-8/arch-arm"
$ export CC="${NDK_HOME}/toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/bin/arm-linux-androideabi-gcc –sysroot=$SYSROOT"
Vérifions la version de GNU/Gcc de la toolchain :
$ $CC --version
arm-linux-androideabi-gcc (GCC) 4.8
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
Il sera ensuite possible d'intégrer la règle de compilation suivante dans les Makefiles :
.c.o:
@echo "n---" $@ "---"
$(CC) $(CFLAGS) -c -o $@ $<
3. Limitations
La libc Bionic est une version BSD de la librairie GNU C glibc ou eglibc utilisé habituellement sous
4. linux. Elle a été initialement développé par Google pour son système d'exploitation Android en
incluant des optimisation pour la mobilité.
Elle a plusieurs caractéristiques majeures spécifiques au noyau Linux, et son développement se
poursuit indépendamment du code source d'Android. Son code est accessible sur le github
suivant : https://github.com/android/platform_bionic
Les ingénieurs d'Android ont décidé de développer une libc propre à la plateforme Android car
ils avaient besoin d'une libc légère (la libc sera chargé dans chaque processus) et rapide (les
appareils mobiles ne disposent de CPU puissant).
La Bionic libc a été écrit pour supporter les CPU ARM, bien que le support x86 est présent. Il n'y
pas de support pour les autres architecture CPU tel que PowerPC ou MIPS. Néanmoins, pour le
marché des appareils mobiles, seulement l'architecture ARM est importante.
Parmi les limitations, il y a une restriction au niveau des locales qui sont absente.
Cette libc est sous licence BSD, elle reprend une grande partie du code des glibc issue
d'OpenBSD, FreeBSD et NetBSD.
Caractéristique importante :
Elle pèse environ 200Ko soit la moitié de la glibc ;
L'implémentation des pthreads (POSIX thread) a été complètement réécrit pour supporter
les threads de la machine virtuelle Dalvik. De ce fait la Bionic libc ne supporte les threads
POSIX ;
Les exceptions C++ et les "wide char" ne sont pas supportés ;
Il n'y a pas eu de "Standard Template Library" (STI) avant la r9c ; il est désormais possible
de
télécharger
http://dl.google.com/android/ndk/android-ndk-r9c-cxx-stl-libs-with-
debugging-info.zip
Tableau des associations rattachant une architecture à une version d'API android :
Architecture
Plateforme Goole/Android
ARM, ARM-NEON
Android 1.5 (API Level 3) ou supérieur
x86
Android 2.3 (API Level 9) ou supérieur
MIPS
Android 2.3 (API Level 9) ou supérieur
4. Infos de génération pour la librairie XML expat
Avant de cross-compiler la librairie expat, allons regarder la référence dans LFS (aka Linux From
Scratch) qui détaille ce qu'il faut pour (cross)compiler un package.
Pour
librairie
expat,
tout
est
décris
http://www.linuxfromscratch.org/blfs/view/svn/general/expat.html
à
l'adresse
Les étapes sont :
•
Téléchargement :
URL (http) : http://downloads.sourceforge.net/expat/expat-2.1.0.tar.gz
•
Extraction :
tar zxvf expat-2.1.0.tar.gz && cd expat-2.1.0/
•
Configuration :
./configure --prefix=/usr –disable-static
•
Compilation :
make
•
Installation :
suivante :
5. make install &&
install -v -m755 -d /usr/share/doc/expat-2.1.0 &&
install -v -m644 doc/*.{html,png,css} /usr/share/doc/expat-2.1.0
5. Cross-compilation d'un package à base d'autotools
Pour l'exemple, je vais cross-compiler la librairie expat.
Je vais commencer par la récupérer les sources du package via le bash script suivant :
#!/bin/bash
echo "--> Récupération du package ${PACKAGE_NAME} - v${PACKAGE_VERSION} "
# --- Téléchargement du package --if [ "${PACKAGE_PROTOCOL}" != "" ] && [ "${PACKAGE_URL}" != "" ] && [ "${PACKAGE_NAME}" !
= "" ] && [ "${PACKAGE_VERSION}" != "" ] && [ "${PACKAGE_EXTENSION}" != "" ]; then
echo -n "
--> Téléchargement du package ... "
wget ${PACKAGE_PROTOCOL}://${PACKAGE_URL}/${PACKAGE_NAME}-${PACKAGE_VERSION}.$
{PACKAGE_EXTENSION} > /dev/null 2>&1
if [ -e "${PACKAGE_NAME}-${PACKAGE_VERSION}.${PACKAGE_EXTENSION}" ]; then
echo "OK"
else
echo "NOK ... arrêt !!"
exit
fi
else
echo " --> [ERROR] Package mal référencé ; Téléchargement impossible. "
echo " Exemple de description du package définissant la librairie expat : "
echo "
export PACKAGE_PROTOCOL=http "
echo "
export PACKAGE_URL=downloads.sourceforge.net/expat "
echo "
export PACKAGE_VERSION=2.1.0 "
echo "
export PACKAGE_NAME=expat "
echo "
export PACKAGE_EXTENSION=tar.gz "
echo "
export PACKAGE_CMD_EXTRACTION=tar zxvf "
exit
fi
# --- Extraction du package --if [ "${PACKAGE_CMD_EXTRACTION}" != "" ] && [ "${PACKAGE_NAME}" != "" ] && [ "$
{PACKAGE_VERSION}" != "" ] && [ "${PACKAGE_EXTENSION}" != "" ]; then
echo -n "
--> Extraction du package ... "
${PACKAGE_CMD_EXTRACTION} ${PACKAGE_NAME}-${PACKAGE_VERSION}.${PACKAGE_EXTENSION}
> /dev/null 2>&1
if [ -d "${PACKAGE_NAME}-${PACKAGE_VERSION}" ]; then
echo "OK"
else
echo "NOK ... arrêt !!"
exit
fi
else
echo " --> [ERROR] Impossible de trouver l'outils d'extraction $
{PACKAGE_CMD_EXTRACTION}
"
echo "
ou bien le package ${PACKAGE_NAME}-${PACKAGE_VERSION}.$
{PACKAGE_EXTENSION} "
exit
fi
# --- Déférencement des variables des registres pour nettoyer l'environement --echo -n "
--> Nettoyage de l'environement ... "
LIST_ENV="PACKAGE_PROTOCOL PACKAGE_URL PACKAGE_VERSION PACKAGE_NAME PACKAGE_EXTENSION
PACKAGE_CMD_EXTRACTION"
6. for VAR in `echo ${LIST_ENV}`
do
if [ "${VAR}" != "" ]; then
unset ${VAR}
fi
done
if [ "`env | grep PACKAGE`" == "" ]; then
echo "OK"
else
echo "NOK ... arrêt !!"
exit
fi
# Done.
echo "<-- Done."
Après définition des informations du package, le téléchargement et l'extraction du package s'effectue de la
façon suivante :
$ PACKAGE_PROTOCOL="http" PACKAGE_URL="downloads.sourceforge.net/expat"
PACKAGE_VERSION="2.1.0" PACKAGE_NAME="expat" PACKAGE_EXTENSION="tar.gz"
PACKAGE_CMD_EXTRACTION="tar zxvf" ./getPackage.sh
--> Récupération du package expat - v2.1.0
--> Téléchargement du package ...
--> Extraction du package ...
--> Nettoyage de l'environement ...
<-- Done.
Une fois effectué, si aucune erreur n'est apparue, voilà ce que l'on doit avoir, à savoir le répertoire contenant
les sources et l'archive :
$ ls -al | grep expat-2.1.0
drwxrwxr-x 13 tgayet tgayet 4096 mars 24 2012 expat-2.1.0
-rw-rw-r-- 1 tgayet tgayet 562616 mars 24 2012 expat-2.1.0.tar.gz
$ cd expat-2.1.0/
$ ls -al
total 980
drwxrwxr-x 13 tgayet tgayet 4096 mars 24 2012 .
drwxrwxr-x 3 tgayet tgayet 4096 janv. 21 13:26 ..
-rw-rw-r-- 1 tgayet tgayet 304569 mars 24 2012 aclocal.m4
drwxrwxr-x 3 tgayet tgayet 4096 mars 24 2012 amiga
drwxrwxr-x 2 tgayet tgayet 4096 mars 24 2012 bcb5
-rw-rw-r-- 1 tgayet tgayet 11379 mars 24 2012 Changes
-rwxrwxr-x 1 tgayet tgayet 3299 mars 5 2012 CMakeLists.txt
-rwxrwxr-x 1 tgayet tgayet 1768 mars 5 2012 CMake.README
-rwxrwxr-x 1 tgayet tgayet 565580 mars 24 2012 configure
-rwxrwxr-x 1 tgayet tgayet 1512 mars 5 2012 ConfigureChecks.cmake
-rw-rw-r-- 1 tgayet tgayet 4652 mars 4 2012 configure.in
drwxrwxr-x 2 tgayet tgayet 4096 mars 24 2012 conftools
-rw-rw-r-- 1 tgayet tgayet 1208 déc. 29 2005 COPYING
drwxrwxr-x 2 tgayet tgayet 4096 mars 24 2012 doc
drwxrwxr-x 2 tgayet tgayet 4096 mars 24 2012 examples
-rwxrwxr-x 1 tgayet tgayet 2735 mars 5 2012 expat_config.h.cmake
7. -rw-rw-r-- 1 tgayet tgayet 2728 mars 24 2012 expat_config.h.in
-rwxrwxr-x 1 tgayet tgayet 1990 sept. 30 2004 expat.dsw
-rw-rw-r-- 1 tgayet tgayet
231 janv. 19 2009 expat.pc.in
drwxrwxr-x 2 tgayet tgayet 4096 mars 24 2012 lib
drwxrwxr-x 2 tgayet tgayet 4096 mars 24 2012 m4
-rw-rw-r-- 1 tgayet tgayet 7036 mars 18 2012 Makefile.in
-rw-rw-r-- 1 tgayet tgayet 2518 mars 5 2012 MANIFEST
-rw-rw-r-- 1 tgayet tgayet 5790 mars 11 2012 README
drwxrwxr-x 3 tgayet tgayet 4096 mars 24 2012 tests
drwxrwxr-x 2 tgayet tgayet 4096 mars 24 2012 vms
drwxrwxr-x 2 tgayet tgayet 4096 mars 24 2012 win32
drwxrwxr-x 2 tgayet tgayet 4096 mars 24 2012 xmlwf
On vérifie que le package supporte bien le support autotools avec la présence des fichiers « configure.in,
configure, Makefile.in, expat.pc.in ».
Ecrivons maintenant un script qui définera l’environnement pour le script autotools. Au final le script nommé
« build.sh » exécutera le script « configure » :
#!/bin/bash
# – Définition des chemins --export ANDROID_NDK=/opt/android-ndk-r9c/
export DEV_PREFIX=${ANDROID_NDK}/platforms/android-8/arch-arm/
export CROSS_COMPILE=arm-linux-androideabi
export ANDROID_PREFIX=${ANDROID_NDK}/toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64
export SYSROOT=${ANDROID_NDK}/platforms/android-8/arch-arm
export CROSS_PATH=${ANDROID_PREFIX}/bin/${CROSS_COMPILE}
export PREFIX=${DEV_PREFIX}/usr
# – déclaration des outils de la toolchain -export CPP=${CROSS_PATH}-cpp
export AR=${CROSS_PATH}-ar
export AS=${CROSS_PATH}-as
export NM=${CROSS_PATH}-nm
export CC=${CROSS_PATH}-gcc
export LD=${CROSS_PATH}-ld
export RANLIB=${CROSS_PATH}-ranlib
export PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig
export CFLAGS="${CFLAGS} --sysroot=${SYSROOT} -I${SYSROOT}/usr/include -I$
{ANDROID_PREFIX}/include -I${DEV_PREFIX}/android/bionic"
export CPPFLAGS="${CFLAGS}"
export LDFLAGS="${LDFLAGS} -L${SYSROOT}/usr/lib -L${ANDROID_PREFIX}/lib"
./configure --host=${CROSS_COMPILE} --with-sysroot=${SYSROOT} --prefix=${PREFIX} "$@"
Enfin le :
./build.sh
configure: WARNING: if you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used
checking build system type... x86_64-unknown-linux-gnu
checking host system type... arm-unknown-linux-androideabi
configure: WARNING: Libtool does not cope well with whitespace in `pwd`
checking how to print strings... printf
checking for arm-linux-androideabi-gcc... /opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
checking whether the C compiler works... yes
8. checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/armlinux-androideabi-gcc accepts -g... yes
checking for /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linuxandroideabi-gcc option to accept ISO C89... none needed
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/bin/arm-linux-androideabi-gcc... /opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ld
checking if the linker (/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/armlinux-androideabi-ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /opt/android-ndk-r9//toolchains/arm-linuxandroideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-nm
checking the name lister (/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/bin/arm-linux-androideabi-nm) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to arm-unknown-linux-androideabi format...
func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linuxandroideabi-ld option to reload object files... -r
checking for arm-linux-androideabi-objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for arm-linux-androideabi-dlltool... dlltool
checking how to associate runtime and link libraries... printf %sn
checking for arm-linux-androideabi-ar... /opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar
checking for archiver @FILE support... @
checking for arm-linux-androideabi-strip... no
checking for strip... strip
configure: WARNING: using cross tools not prefixed with host triplet
checking for arm-linux-androideabi-ranlib... /opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ranlib
checking for gawk... gawk
checking command to parse /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/bin/arm-linux-androideabi-nm output from /opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc object... ok
checking for sysroot... /opt/android-ndk-r9//platforms/android-8/arch-arm
9. checking for arm-linux-androideabi-mt... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... /opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-cpp
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linuxandroideabi-gcc supports -fno-rtti -fno-exceptions... no
checking for /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linuxandroideabi-gcc option to produce PIC... -fPIC -DPIC
checking if /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linuxandroideabi-gcc PIC flag -fPIC -DPIC works... yes
checking if /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linuxandroideabi-gcc static flag -static works... yes
checking if /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linuxandroideabi-gcc supports -c -o file.o... yes
checking if /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linuxandroideabi-gcc supports -c -o file.o... (cached) yes
checking whether the /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/armlinux-androideabi-gcc linker (/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/bin/arm-linux-androideabi-ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for arm-linux-androideabi-gcc... (cached) /opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/armlinux-androideabi-gcc accepts -g... (cached) yes
checking for /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linuxandroideabi-gcc option to accept ISO C89... (cached) none needed
checking for arm-linux-androideabi-g++... no
10. checking for arm-linux-androideabi-c++... no
checking for arm-linux-androideabi-gpp... no
checking for arm-linux-androideabi-aCC... no
checking for arm-linux-androideabi-CC... no
checking for arm-linux-androideabi-cxx... no
checking for arm-linux-androideabi-cc++... no
checking for arm-linux-androideabi-cl.exe... no
checking for arm-linux-androideabi-FCC... no
checking for arm-linux-androideabi-KCC... no
checking for arm-linux-androideabi-RCC... no
checking for arm-linux-androideabi-xlC_r... no
checking for arm-linux-androideabi-xlC... no
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/bin/arm-linux-androideabi-ld
checking if the linker (/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/armlinux-androideabi-ld) is GNU ld... yes
checking whether the g++ linker (/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/bin/arm-linux-androideabi-ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... no
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/bin/arm-linux-androideabi-ld) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for a BSD-compatible install... /usr/bin/install -c
checking whether /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/armlinux-androideabi-gcc accepts -fexceptions... yes
checking for ANSI C header files... (cached) yes
checking whether byte ordering is bigendian... cross-compiling...
unknown
checking to probe for byte ordering... little endian probe OK,
guessing bigendian ...
no
checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking for memmove... yes
checking for bcopy... yes
checking fcntl.h usability... yes
11. checking fcntl.h presence... yes
checking for fcntl.h... yes
checking for unistd.h... (cached) yes
checking for off_t... yes
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/param.h... yes
checking for getpagesize... no
checking for working mmap... no
checking for /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linuxandroideabi-gcc option to accept ISO C99... -std=gnu99
checking for /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linuxandroideabi-gcc -std=gnu99 option to accept ISO Standard C... (cached) -std=gnu99
checking for an ANSI C99-conforming __func__... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: WARNING: 'Makefile.in' seems to ignore the --datarootdir setting
config.status: creating expat.pc
config.status: creating expat_config.h
config.status: executing libtool commands
Lançons la compilation :
$ make
/bin/bash ./libtool --silent --mode=compile /opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -std=gnu99 -I./lib -I. --sysroot=/opt/android-ndkr9//platforms/android-8/arch-arm -I/opt/android-ndk-r9//platforms/android-8/arch-arm/usr/include
-I/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include -I/opt/android-ndkr9//platforms/android-8/arch-arm//android/bionic -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions
--sysroot=/opt/android-ndk-r9//platforms/android-8/arch-arm -I/opt/android-ndk-r9//platforms/android-8/archarm/usr/include -I/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include
-I/opt/android-ndk-r9//platforms/android-8/arch-arm//android/bionic -DHAVE_EXPAT_CONFIG_H -o
lib/xmlparse.lo -c lib/xmlparse.c
/bin/bash ./libtool --silent --mode=compile /opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -std=gnu99 -I./lib -I. --sysroot=/opt/android-ndkr9//platforms/android-8/arch-arm -I/opt/android-ndk-r9//platforms/android-8/arch-arm/usr/include
-I/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include -I/opt/android-ndkr9//platforms/android-8/arch-arm//android/bionic -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions
--sysroot=/opt/android-ndk-r9//platforms/android-8/arch-arm -I/opt/android-ndk-r9//platforms/android-8/archarm/usr/include -I/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include
-I/opt/android-ndk-r9//platforms/android-8/arch-arm//android/bionic -DHAVE_EXPAT_CONFIG_H -o
lib/xmltok.lo -c lib/xmltok.c
/bin/bash ./libtool --silent --mode=compile /opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -std=gnu99 -I./lib -I. --sysroot=/opt/android-ndkr9//platforms/android-8/arch-arm -I/opt/android-ndk-r9//platforms/android-8/arch-arm/usr/include
-I/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include -I/opt/android-ndkr9//platforms/android-8/arch-arm//android/bionic -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions
--sysroot=/opt/android-ndk-r9//platforms/android-8/arch-arm -I/opt/android-ndk-r9//platforms/android-8/archarm/usr/include -I/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include
-I/opt/android-ndk-r9//platforms/android-8/arch-arm//android/bionic -DHAVE_EXPAT_CONFIG_H -o
lib/xmlrole.lo -c lib/xmlrole.c
/bin/bash ./libtool --silent --mode=link /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/bin/arm-linux-androideabi-gcc -std=gnu99 -I./lib -I. --sysroot=/opt/android-ndk-r9//platforms/android8/arch-arm -I/opt/android-ndk-r9//platforms/android-8/arch-arm/usr/include -I/opt/android-ndkr9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include -I/opt/android-ndk-
12. r9//platforms/android-8/arch-arm//android/bionic -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions
--sysroot=/opt/android-ndk-r9//platforms/android-8/arch-arm -I/opt/android-ndk-r9//platforms/android-8/archarm/usr/include -I/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include
-I/opt/android-ndk-r9//platforms/android-8/arch-arm//android/bionic -DHAVE_EXPAT_CONFIG_H -noundefined -version-info 7:0:6 -rpath /opt/android-ndk-r9//platforms/android-8/arch-arm//usr/lib -L/opt/androidndk-r9//platforms/android-8/arch-arm/usr/lib -L/opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/lib -o libexpat.la lib/xmlparse.lo lib/xmltok.lo lib/xmlrole.lo
/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
-std=gnu99 -I./lib -I. --sysroot=/opt/android-ndk-r9//platforms/android-8/arch-arm -I/opt/android-ndkr9//platforms/android-8/arch-arm/usr/include -I/opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/include -I/opt/android-ndk-r9//platforms/android-8/arch-arm//android/bionic -Wall
-Wmissing-prototypes -Wstrict-prototypes -fexceptions --sysroot=/opt/android-ndk-r9//platforms/android8/arch-arm -I/opt/android-ndk-r9//platforms/android-8/arch-arm/usr/include -I/opt/android-ndkr9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include -I/opt/android-ndkr9//platforms/android-8/arch-arm//android/bionic -DHAVE_EXPAT_CONFIG_H -o xmlwf/xmlwf.o -c
xmlwf/xmlwf.c
/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
-std=gnu99 -I./lib -I. --sysroot=/opt/android-ndk-r9//platforms/android-8/arch-arm -I/opt/android-ndkr9//platforms/android-8/arch-arm/usr/include -I/opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/include -I/opt/android-ndk-r9//platforms/android-8/arch-arm//android/bionic -Wall
-Wmissing-prototypes -Wstrict-prototypes -fexceptions --sysroot=/opt/android-ndk-r9//platforms/android8/arch-arm -I/opt/android-ndk-r9//platforms/android-8/arch-arm/usr/include -I/opt/android-ndkr9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include -I/opt/android-ndkr9//platforms/android-8/arch-arm//android/bionic -DHAVE_EXPAT_CONFIG_H -o xmlwf/xmlfile.o -c
xmlwf/xmlfile.c
/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
-std=gnu99 -I./lib -I. --sysroot=/opt/android-ndk-r9//platforms/android-8/arch-arm -I/opt/android-ndkr9//platforms/android-8/arch-arm/usr/include -I/opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/include -I/opt/android-ndk-r9//platforms/android-8/arch-arm//android/bionic -Wall
-Wmissing-prototypes -Wstrict-prototypes -fexceptions --sysroot=/opt/android-ndk-r9//platforms/android8/arch-arm -I/opt/android-ndk-r9//platforms/android-8/arch-arm/usr/include -I/opt/android-ndkr9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include -I/opt/android-ndkr9//platforms/android-8/arch-arm//android/bionic -DHAVE_EXPAT_CONFIG_H -o xmlwf/codepage.o -c
xmlwf/codepage.c
/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
-std=gnu99 -I./lib -I. --sysroot=/opt/android-ndk-r9//platforms/android-8/arch-arm -I/opt/android-ndkr9//platforms/android-8/arch-arm/usr/include -I/opt/android-ndk-r9//toolchains/arm-linux-androideabi4.8/prebuilt/linux-x86_64/include -I/opt/android-ndk-r9//platforms/android-8/arch-arm//android/bionic -Wall
-Wmissing-prototypes -Wstrict-prototypes -fexceptions --sysroot=/opt/android-ndk-r9//platforms/android8/arch-arm -I/opt/android-ndk-r9//platforms/android-8/arch-arm/usr/include -I/opt/android-ndkr9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include -I/opt/android-ndkr9//platforms/android-8/arch-arm//android/bionic -DHAVE_EXPAT_CONFIG_H -o xmlwf/readfilemap.o -c
xmlwf/readfilemap.c
/bin/bash ./libtool --silent --mode=link /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/bin/arm-linux-androideabi-gcc -std=gnu99 -I./lib -I. --sysroot=/opt/android-ndk-r9//platforms/android8/arch-arm -I/opt/android-ndk-r9//platforms/android-8/arch-arm/usr/include -I/opt/android-ndkr9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include -I/opt/android-ndkr9//platforms/android-8/arch-arm//android/bionic -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions
--sysroot=/opt/android-ndk-r9//platforms/android-8/arch-arm -I/opt/android-ndk-r9//platforms/android-8/archarm/usr/include -I/opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include
-I/opt/android-ndk-r9//platforms/android-8/arch-arm//android/bionic -DHAVE_EXPAT_CONFIG_H
-L/opt/android-ndk-r9//platforms/android-8/arch-arm/usr/lib -L/opt/android-ndk-r9//toolchains/arm-linuxandroideabi-4.8/prebuilt/linux-x86_64/lib -o xmlwf/xmlwf xmlwf/xmlwf.o xmlwf/xmlfile.o xmlwf/codepage.o
xmlwf/readfilemap.o libexpat.la
L'installation se fera dans le NDK android pour pouvoir gérer les dépendances entre paquets cross-compilés.
Pour ce faire le paramètre « prefix » du script autotools a été adapté en conséquence. Il aurait été possible
de laisser le prefix à la valeur usuelle comme « /usr » et en définissant le paramètre DESTDIR pour préciser
la racine tu rootfs :
$ make install
/bin/bash ./conftools/mkinstalldirs /opt/android-ndk-r9//platforms/android-8/arch-arm//usr/lib /opt/android-ndkr9//platforms/android-8/arch-arm//usr/include /opt/android-ndk-r9//platforms/android-8/arch-
13. arm//usr/lib/pkgconfig
/bin/bash ./libtool --mode=install /usr/bin/install -c libexpat.la /opt/android-ndk-r9//platforms/android-8/archarm//usr/lib/libexpat.la
libtool: install: /usr/bin/install -c .libs/libexpat.so.1.6.0 /opt/android-ndk-r9//platforms/android-8/archarm//usr/lib/libexpat.so.1.6.0
libtool: install: (cd /opt/android-ndk-r9//platforms/android-8/arch-arm//usr/lib && { ln -s -f libexpat.so.1.6.0
libexpat.so.1 || { rm -f libexpat.so.1 && ln -s libexpat.so.1.6.0 libexpat.so.1; }; })
libtool: install: (cd /opt/android-ndk-r9//platforms/android-8/arch-arm//usr/lib && { ln -s -f libexpat.so.1.6.0
libexpat.so || { rm -f libexpat.so && ln -s libexpat.so.1.6.0 libexpat.so; }; })
libtool: install: /usr/bin/install -c .libs/libexpat.lai /opt/android-ndk-r9//platforms/android$ make install
/bin/bash ./conftools/mkinstalldirs /opt/android-ndk-r9//platforms/android-8/arch-arm//usr/lib /opt/android-ndkr9//platforms/android-8/arch-arm//usr/include /opt/android-ndk-r9//platforms/android-8/archarm//usr/lib/pkgconfig
/bin/bash ./libtool --mode=install /usr/bin/install -c libexpat.la /opt/android-ndk-r9//platforms/android-8/archarm//usr/lib/libexpat.la
libtool: install: /usr/bin/install -c .libs/libexpat.so.1.6.0 /opt/android-ndk-r9//platforms/android-8/archarm//usr/lib/libexpat.so.1.6.0
libtool: install: (cd /opt/android-ndk-r9//platforms/android-8/arch-arm//usr/lib && { ln -s -f libexpat.so.1.6.0
libexpat.so.1 || { rm -f libexpat.so.1 && ln -s libexpat.so.1.6.0 libexpat.so.1; }; })
libtool: install: (cd /opt/android-ndk-r9//platforms/android-8/arch-arm//usr/lib && { ln -s -f libexpat.so.1.6.0
libexpat.so || { rm -f libexpat.so && ln -s libexpat.so.1.6.0 libexpat.so; }; })
libtool: install: /usr/bin/install -c .libs/libexpat.lai /opt/android-ndk-r9//platforms/android-8/archarm//usr/lib/libexpat.la
libtool: install: /usr/bin/install -c .libs/libexpat.a /opt/android-ndk-r9//platforms/android-8/archarm//usr/lib/libexpat.a
libtool: install: chmod 644 /opt/android-ndk-r9//platforms/android-8/arch-arm//usr/lib/libexpat.a
libtool: install: /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linuxandroideabi-ranlib /opt/android-ndk-r9//platforms/android-8/arch-arm//usr/lib/libexpat.a-8/archarm//usr/lib/libexpat.la
libtool: install: /usr/bin/install -c .libs/libexpat.a /opt/android-ndk-r9//platforms/android-8/archarm//usr/lib/libexpat.a
libtool: install: chmod 644 /opt/android-ndk-r9//platforms/android-8/arch-arm//usr/lib/libexpat.a
libtool: install: /opt/android-ndk-r9//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linuxandroideabi-ranlib /opt/android-ndk-r9//platforms/android-8/arch-arm//usr/lib/libexpat.a
Voila c'est terminé pour autotools.
6. Cross-compilation d'un package à base de cmake
Pour cmake, je vais rester toujours sur le package libexpat qui propose aussi un support pour cmake avec le
fichier « CMakeLists.txt ».
Avant de commencer téléchargeons le script de wrapping android pour cmake que nous allons mettre
également dans /opt :
$ cd /opt
$ sudo git clone https://github.com/taka-no-me/android-cmake.git
Ce script propose l'utilisation suivante pour la plateforme GNU/Linux :
$ export ANDROID_NDK=/absolute/path/to/the/android-ndk
$ mkdir build && cd build
$ cmake -DCMAKE_TOOLCHAIN_FILE=path/to/the/android.toolchain.cmake ..
$ make -j8
Pour notre cas cela va devenir :
14. $ export ANDROID_NDK=/opt/android-ndk-r9c
$ mkdir androidbuild && cd androidbuild
$ cmake -DCMAKE_TOOLCHAIN_FILE=/opt/android-cmake/android.toolchain.cmake ..
$ export ANDROID_NDK=/opt/android-ndk-r9c
$ mkdir androidbuild && cd androidbuild
$ cmake -DCMAKE_TOOLCHAIN_FILE=/opt/android-cmake/android.toolchain.cmake ..
-- Looking for dlfcn.h
-- Looking for dlfcn.h - found
-- Looking for fcntl.h
-- Looking for fcntl.h - found
-- Looking for inttypes.h
-- Looking for inttypes.h - found
-- Looking for memory.h
-- Looking for memory.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stdlib.h
-- Looking for stdlib.h - found
-- Looking for strings.h
-- Looking for strings.h - found
-- Looking for string.h
-- Looking for string.h - found
-- Looking for sys/stat.h
-- Looking for sys/stat.h - found
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Looking for getpagesize
-- Looking for getpagesize - not found
-- Looking for bcopy
-- Looking for bcopy - found
-- Looking for memmove
-- Looking for memmove - found
-- Looking for mmap
-- Looking for mmap - found
-- Looking for 4 include files stdlib.h, ..., float.h
-- Looking for 4 include files stdlib.h, ..., float.h - found
-- Check if the system is big endian
-- Searching 16 bit integer
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of unsigned short
15. -- Check size of unsigned short - done
-- Using unsigned short
-- Check if the system is big endian - little endian
-- Looking for off_t
-- Looking for off_t - not found
-- Looking for size_t
-- Looking for size_t - not found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tgayet/Documents/articles_lm/cross-compilation android/expat2.1.0/androidbuild
Cette étape permet de préparer le projet de façon à permettre un build :
$ make
Scanning dependencies of target expat
[ 5%] Building C object CMakeFiles/expat.dir/lib/xmlparse.c.o
[ 11%] Building C object CMakeFiles/expat.dir/lib/xmlrole.c.o
[ 17%] Building C object CMakeFiles/expat.dir/lib/xmltok.c.o
[ 23%] Building C object CMakeFiles/expat.dir/lib/xmltok_impl.c.o
[ 29%] Building C object CMakeFiles/expat.dir/lib/xmltok_ns.c.o
Linking C shared library ../libs/armeabi-v7a/libexpat.so
[ 29%] Built target expat
Scanning dependencies of target elements
[ 35%] Building C object CMakeFiles/elements.dir/examples/elements.c.o
Linking C executable ../bin/elements
[ 35%] Built target elements
Scanning dependencies of target outline
[ 41%] Building C object CMakeFiles/outline.dir/examples/outline.c.o
Linking C executable ../bin/outline
[ 41%] Built target outline
Scanning dependencies of target runtests
[ 47%] Building C object CMakeFiles/runtests.dir/tests/runtests.c.o
[ 52%] Building C object CMakeFiles/runtests.dir/tests/chardata.c.o
[ 58%] Building C object CMakeFiles/runtests.dir/tests/minicheck.c.o
Linking C executable ../bin/runtests
[ 58%] Built target runtests
Scanning dependencies of target runtestspp
[ 64%] Building CXX object CMakeFiles/runtestspp.dir/tests/runtestspp.cpp.o
In file included from /home/tgayet/Documents/articles_lm/cross-compilation android/expat2.1.0/tests/runtests.c:19:0,
from /home/tgayet/Documents/articles_lm/cross-compilation android/expat2.1.0/tests/runtestspp.cpp:6:
/home/tgayet/Documents/articles_lm/cross-compilation android/expat-2.1.0/tests/runtests.c: In function 'void
basic_setup()':
(...)
^
16. [ 70%] Building C object CMakeFiles/runtestspp.dir/tests/chardata.c.o
[ 76%] Building C object CMakeFiles/runtestspp.dir/tests/minicheck.c.o
Linking CXX executable ../bin/runtestspp
[ 76%] Built target runtestspp
Scanning dependencies of target xmlwf
[ 82%] Building C object CMakeFiles/xmlwf.dir/xmlwf/xmlwf.c.o
[ 88%] Building C object CMakeFiles/xmlwf.dir/xmlwf/xmlfile.c.o
[ 94%] Building C object CMakeFiles/xmlwf.dir/xmlwf/codepage.c.o
[100%] Building C object CMakeFiles/xmlwf.dir/xmlwf/readfilemap.c.o
Linking C executable ../bin/xmlwf
[100%] Built target xmlwf
Une version moins silentieuse peut être demandé :
$ make VERBOSE=1
L'installation est aussi simple :
$ sudo make install
[ 29%] Built target expat
[ 35%] Built target elements
[ 41%] Built target outline
[ 58%] Built target runtests
[ 76%] Built target runtestspp
[100%] Built target xmlwf
Install the project...
-- Install configuration: ""
-- Up-to-date: /opt/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/user/lib/libexpat.so
-- Up-to-date: /opt/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/user/include/expat.h
-- Up-to-date: /opt/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/user/include/expat_external.h
-- Up-to-date: /opt/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/user/lib/pkgconfig/expat.pc
-- Up-to-date: /opt/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/user/bin/xmlwf
-- Up-to-date: /opt/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/linuxx86_64/user/share/man/man1/xmlwf.1
7. Conclusion
Avec ces deux recettes, il nous sera possible de cross-compiler nombre packages via la toolchain
android sur le même modèle.
8. Liens
•
•
•
•
•
http://www.linuxfromscratch.org/blfs/view/svn/general/expat.html
http://developer.android.com/tools/sdk/ndk/index.html
https://github.com/android/platform_bionic
http://elinux.org/Android_Notes#C_Library_.28bionic.29_info
http://developer.android.com/index.html