# Precompiled Binary

[View full source code on GitHub](https://github.com/dnanexus/dnanexus-example-applets/tree/master/Tutorials/bash/samtools_count_binary_sh)

## Precompiling a Binary

In this applet, the SAMtools binary was precompiled on an Ubuntu machine. A user can do this compilation on an Ubuntu machine of their own, or they can use the Cloud Workstation app to build and compile a binary. On the Cloud Workstation, the user can download the SAMtools source code and compile it in the worker environment, ensuring that the binary runs on future workers.

See [Cloud Workstation](https://platform.dnanexus.com/app/cloud_workstation)in the App library for more information.

## Resources Directory

The SAMtools precompiled binary is placed in the `<applet dir>/resources/` directory. Any files found in the `resources/` directory are packaged, uploaded to the Platform, and then extracted in the root directory `\` of the worker. In this case, the `resources/` dir is structured as follows:

```
├── Applet dir
│   ├── src
│   ├── dxapp.json
│   ├── resources
│       ├── usr
│           ├── bin
│               ├── < samtools binary >
```

When this applet is run on a worker, the `resources/` directory is placed in the worker's root directory `/`:

```
/
├── usr
│   ├── bin
│       ├── < samtools binary >
├── home
│   ├── dnanexus
│       ├── applet script
```

The SAMtools command is available because the respective binary is visible from the default `$PATH` variable. The directory `/usr/bin/` is part of `$PATH`, so the script can reference the `samtools` command directly:

```shell
samtools view -c "${mappings_bam_name}" > "${mappings_bam_prefix}.txt"
```
